#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); }