一、简介
最多可支持 55 个通用 I/O 引脚(GPIO),分别为 PA0 ~ PA15, PB0 ~ PB15, PC0 ~ PC15,PD2, PF0, PF1, PF4 ~ PF7,各片上设备用其来实现逻辑输入/输出功能。每个 GPIO 端口有相关的控制和配置寄存器以满足特定应用的需求。
GPIO端口和其他的备用功能(AFs)备用引脚,在特定的封装下获得最大的灵活性。 GPIO引
脚通过配置相关的寄存器可以用作备用功能引脚,备用功能输入/输出都可以。
每个 GPIO 引脚可以由软件配置为输出(推挽或开漏)、 输入、 外设备用功能或者模拟模式。每个GPIO引脚都可以配置为上拉、 下拉或无上拉/下拉。除模拟模式外,所有的GPIO引脚都
具备大电流驱动能力。
二、主要特性
输入/输出方向控制;
施密特触发输入功能使能控制;
每个引脚都具有弱上拉/下拉功能;
推挽/开漏输出使能控制;
置位/复位输出使能;
输出驱动速度选择;
模拟输入/输出配置;
备用功能输入/输出配置;
端口锁定配置;
单周期输出翻转功能。
三、代码实现
1.使能GPIO时钟
2.设置GPIO的引脚模式
3.设置GPIO的引脚输出模式和速度
4.复位引脚值
void gpio_init()
{
/* 使能GPIOA时钟 */
rcu_periph_clock_enable(RCU_GPIOA);
/* 设置GPIOA引脚模式:输出模式、悬空模式、引脚PIN1 */
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_1);
/* 设置GPIOA引脚:推挽输出模式、最大速度50MHz、引脚PIN1 */
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_1);
/* 复位GPIOA的PIN1 */
gpio_bit_reset(GPIOA, GPIO_PIN_1);
}