Files
stm32h7-libopencm3/1gpio/user/src/gpio.c
2025-09-28 23:33:51 +08:00

48 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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);
}