48 lines
2.3 KiB
C
48 lines
2.3 KiB
C
#include "gpio.h"
|
||
|
||
/**
|
||
* @brief 初始化用户GPIO引脚配置
|
||
*
|
||
* @details 该函数用于初始化和配置用户所需的GPIO引脚,主要包括以下配置:
|
||
* 1. 使能GPIOE时钟,配置PE3引脚为推挽输出模式,速度为2MHz,初始状态为低电平
|
||
* 2. 使能备份区域寄存器访问(通过设置PWR_CR1_DBP位)
|
||
* 3. 使能GPIOC时钟,配置PC13引脚为输入模式,并启用下拉电阻
|
||
* 这些配置通常用于设置LED控制引脚和按钮输入引脚等常见外设接口。
|
||
*
|
||
* @note 该函数应在系统初始化阶段调用,确保GPIO引脚在使用前已正确配置。
|
||
* PE3引脚配置为输出模式,可用于驱动LED或其他输出设备。
|
||
* PC13引脚配置为输入模式并启用下拉电阻,适合连接按钮或开关等输入设备。
|
||
* PWR_CR1_DBP位的设置允许访问备份寄存器,这在某些应用中可能是必要的。
|
||
*
|
||
* @warning 在调用此函数前,应确保系统时钟已经正确配置。
|
||
* 修改GPIO配置可能会影响连接到这些引脚的外设功能。
|
||
* 在多任务系统中,如果多个任务访问同一GPIO,可能需要添加同步机制。
|
||
*
|
||
* @see rcc_periph_clock_enable(), gpio_mode_setup(), gpio_set_output_options(), gpio_clear()
|
||
*/
|
||
void user_gpio_setup(void)
|
||
{
|
||
// 使能GPIOE端口的时钟,必须先使能时钟才能配置和使用该端口的引脚
|
||
rcc_periph_clock_enable(RCC_GPIOE);
|
||
|
||
// 配置GPIOE端口的引脚3为输出模式,不使用上拉或下拉电阻
|
||
gpio_mode_setup(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO3);
|
||
|
||
// 设置GPIOE端口引脚3的输出选项:推挽输出类型,速度为2MHz
|
||
gpio_set_output_options(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_2MHZ, GPIO3);
|
||
|
||
// 将GPIOE端口引脚3设置为低电平,也就是灯灭
|
||
gpio_clear(GPIOE, GPIO3);
|
||
|
||
// 使能备份域访问,通过设置电源控制寄存器1的DBP位
|
||
// 这是访问RTC、备份寄存器等备份域外设的必要步骤
|
||
// PC13-PC15是备份域的GPIO引脚,需要使能备份域访问才能配置这些引脚
|
||
PWR_CR1 |= PWR_CR1_DBP;
|
||
|
||
// 使能GPIOC端口的时钟,必须先使能时钟才能配置和使用该端口的引脚
|
||
rcc_periph_clock_enable(RCC_GPIOC);
|
||
|
||
// 配置GPIOC端口的引脚13为输入模式,并启用下拉电阻
|
||
gpio_mode_setup(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN, GPIO13);
|
||
}
|