GPIO简介
GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。
在stm32f103c8t6最小系统开发板中,我们可以看到有Ax、Bx、Cx等标注。
A、B、C就是GPIO组,在更高级的一些stm32开发板中我们还可以看到更多的组别,如GPIOD、GPIOE等。
每个GPIO组有16个引脚,依次为0-15号。
STM32中引脚可以当GPIO使用,也可以复用为外设引脚,如常用A9、A10作为串口外设引脚
八种工作模式
GPIO有八种工作模式
一、GPIO_Mode_AIN 模拟输入
模拟输入即将外部模拟信号(电压信号)输入到芯片中,如使用ADC功能时就是直接采集外部电压信号输入到ADC外设模块上,要注意,外设模块有最大电压,如果超过了其最大电压,则有可能烧毁芯片
二、GPIO_Mode_IPD 下拉输入
下拉输入即GPIO处于输入模式,且在无电压输入的情况下GPIO的电平被钳制在低电平,当有低电平输入时,芯片检测到的电平信号为低电平,如果写了一个检测到低电平就点亮led的程序时,那这个灯在外部不输入高电平的情况下就会一直亮着,直到外部输入了一个高电平,led才会熄灭
三·、GPIO_Mode_IPU 上拉输入
相对于下拉输入,上拉输入是将GPIO的电平钳制在一个高电平,在外部不输入低电平的情况下,芯片检测到的电平将一直为高电平。若有一程序,当检测到低电平时就触发某个功能,则需要将GPIO设置成上拉输入模式,当引脚接入低电平时便会触发。
四、GPIO_Mode_IN_FLOATING 浮空输入
当GPIO模式为浮空输入时,无上拉也无下拉,检测到的电平信号完全取决于
外部输入电平。当悬空(无电平信号输入)时,该IO口检测到的电平信号不能确定
五、GPIO_Mode_Out_OD 开漏输出&GPIO_Mode_Out_PP 推挽输出
开漏输出模式,与推挽输出模式均为输出模式,写一就输出高电平,0输出低电平。但二者驱动能力有差异,开漏输出模式驱动能力较差,推挽输出驱动能力强。
当GPIO处于输出模式同时也可以读到io口电平,但开漏输出模式下读到的电平不一定是输出电平,推挽模式读到的一定是输出电平
六、GPIO_Mode_AF_OD 复用开漏输出&GPIO_Mode_AF_PP 复用推挽输出
复用输出通过片上外设来输出,而不是通过CPU写入输出输出数据。
stm32cubemx的配置
打开stm32cubemx,点击ACCESS TO MCU
然后选择合适的芯片,这里我使用的是stm32f103c8t6,点击start project开始配置
可以进行时钟配置,也可以不配置,根据自己需求选择
点击引脚标号即可进行对应gpio配置