STM32 GPIO总结

STM32F1 GPIO寄存器

两个32位配置寄存器 GPIOx_CRL,GPIOx_CRH;

端口配置低寄存器 GPIOx_CRL;

端口配置高寄存器 GPIOx_CRH;


两个32位数据寄存器 GPIOx_IDR,GPIOx_ODR;

端口输入数据寄存器 GPIOx_IDR;

端口输出数据寄存器 GPIOx_ODR;


一个32位置位/复位寄存器 GPIOx_BSRR;

端口位设置/清除寄存器 GPIOx_BSRR;


一个16位复位寄存器 GPIOx_BRR;

端口位清除寄存器 GPIOx_BRR;


一个32位锁定寄存器 GPIOx_LCKR;

端口配置锁定寄存器 GPIOx_LCKR;


STM32F1 GPIO模式

输入模式:浮空输入;模拟输入;上拉输入;下拉输入;

输出模式:开漏输出;推挽输出;复用推挽输出;复用开漏输出;


STM32F1 GPIO端口基本结构

STM32 GPIO总结


作为通用IO使用

输出:写到输出数据寄存器的值 GPIOx_ODR,输出到相应IO引脚;可以用推挽或开漏模式使用输出寄存器;

输入:输入数据寄存器GPIOx_IDR在每个APB2时钟周期捕捉IO引脚数据,可以**或关闭内部弱上拉和弱下拉;


为了使用外部中断线,端口必须被配置成输入模式。


复用功能

输入复用:端口必须被配置成输入模式且引脚必须由外部驱动。

输出复用:端口必须被配置成输出模式。

双向复用:端口必须被配置成输出模式,输入驱动器配置成浮空输入模式。


软件重映射IO复用功能

通过设置AFIO,可以把一些复用功能重新映射到其他引脚上,复用功能就不再映射到原始引脚。


输出配置:

在开漏模式,对输入数据寄存器的读访问可得到IO状态;

在推挽模式,对输出数据寄存器的读访问可得到最后一次写的值;

不管是开漏模式还是推挽模式,只要读输入寄存器,就可以得到管脚IO状态;推挽模式输出寄存器写入什么值,管脚IO状态就是什么;开漏模式输出寄存器写0,输出0,写1,端口将为高阻态;

开漏模式如果不接上拉电阻,无法输出高电平。


复用功能配置:

在开漏模式,对输入数据寄存器的读访问可得到IO状态;

在推挽模式,对输出数据寄存器的读访问可得到最后一次写的值;