STM32 GPIO开发中标准库的使用心得与体验

STM32的GPIO是通用的输入输出端口,功能非常强大,STM32上的ADC、TIM定时器、SPI、I2C、USART等各类外设在使用时,需要同时配置与外部进行交互的IO口。

STM32标准库GPIO结构体介绍

STM32标准库为各个外设创建了一个结构体,通过各个宏定义去配置外设的寄存器,对应GPIO的初始化结构体如下:

GPIO_Pin端口引脚

STM32芯片有多个端口GPIOA、GPIOB、GPIOC等。

每个端口有对应的引脚,标准库对端口和引脚的宏定义如下:


GPIO_Speed端口输出速度

当GPIO口配置为输出功能时,才需要赋值,标准库对输出速度有三种模式可选。

GPIO_Mode端口模式简单介绍

GPIO_Mode时GPIO端口的输出模式,共有8种可选。

下面是GPIO的硬件框图,引脚输入部分有上下两个二极管防止外部过高过低的电平。

上部是输入驱动器,下部是输出驱动器。

上图是STM32参考手册中对GPIO口结构的介绍,I/O引脚连接2个保护二极管,防止外部过高或过低的电平,后面分别进入输出和输入模式:

输出模式

1.推免式输出(GPIO_Mode_Out_PP)

输出驱动器中的P-MOS、N-MOS管都参与工作,IO口对外输出电平可高可低。

2.开漏输出(GPIO_Mode_Out_OD) 

输出驱动器中只有N-MOS管参与工作,IO口外部输出在低电平与高阻态之间切换,可以实现线与功能(当多个开漏模式的引脚连接到一起,只有当所有引脚都为高阻态时,才由上拉电阻提供高电平)。

输入模式

1.模拟输入(GPIO_Mode_AIN)

用于ADC采集,输入信号不经过肖特基触发器。

2.浮空输入 (GPIO_Mode_IN_FLOATING)

引脚电平完全由外部决定,VDD与VSS开关关闭,信号通过肖特基触发器进入

3.上拉输入(GPIO_Mode_IPU)

 输入部分的VDD开关打开,VSS开关关闭,输入引脚默认电平由上拉电阻决定。

4.下拉输入 (GPIO_Mode_IPD)

输入部分的VSS开关打开,VDD开关关闭,输入引脚默认电平由下拉电阻决定。

复用功能

1.推免式复用功能(GPIO_Mode_AF_PP)

外部PN-MOS管工作状态与推免式相同,内部连线到复用端口。

2.开漏式复用功能(GPIO_Mode_AF_OD)

外部PN-MOS管工作状态与开漏式相同,内部连线到复用端口。

GPIO模式的选择方法

GPIO模式虽然很多,但STM32中文参考手册中8.1.11对外设的GPIO配置模式有较为详细的介绍,使用时可以参照8.1.11章节结合标准库的宏定义进行配置。

标准库GPIO配置流程

用标准库配置GPIO引脚,先创建GPIO的初始化结构体,然后开启时钟。

(这里有一个细节需要注意,STM32为了降低功耗,在配置GPIO寄存器前,一定要先打开对应的时钟,否则配置是无效的)

通过标准库文件中所定义的宏,来配置结构体参数,最后通过标准库提供的GPIO_Init函数来配置相应的寄存器,具体代码如下:

作者:OH籽君

物联沃分享整理
物联沃-IOTWORD物联网 » STM32 GPIO开发中标准库的使用心得与体验

发表回复