STM32笔记(三)—寄存器映射–BSRR分析
GPIO与引脚区别?
-
GPIO包含在引脚内(引脚内还有电源、晶振等特殊功能引脚),除GPIO拓展内容即为单片机最小系统
GPIO功能如何检索?
-
通过芯片datasheet中的pin definitions去检索GPIO功能
输出控制

-
推挽输出(ODR寄存器输出1时推出3.3V/25mA,输出0时拉入GND)
-
开漏输出(只能输出低电平,开漏时P-MOS不工作,N-MOS工作;开漏输出就是不输出电压,控制输出低电平时引脚接地,控制输出高电平时引脚既不输出高电平,也不输出低电平,为高阻态。如果外接上拉电阻,则在输出高电平时电压会拉到上拉电阻的电源电压。这种方式适合在连接的外设电压比单片机电压低的时候。)
补充说明:
-
GPIO_BSRR与GPIO_BRR寄存器
GPIOx_BSRR的高16位称作清除寄存器,而GPIOx_BSRR的低16位称作设置寄存器。BRR低16位即为BSRR高16位。
-
ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。管脚对于位写1 GPIO管脚为高电平,写 0 为低电平(有被中断打断的风险)
-
BSRR 只写寄存器:既能控制管脚为高电平,也能控制管脚为低电平。对寄存器高16位 写1 对应管脚为低电平,写0无动作;对寄存器的第16位写1对应管脚为高电平,写 0 无动作。
-
BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器 管脚对于位写 1 相应管脚会为低电平。写 0 无动作。ODR 能控制管脚高低电平为什么还需要BSRR和SRR寄存器的原因是:用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断,关闭中断明显会延迟或丢失一事件的捕获,所以控制GPIO的状态最好还是用SBRR和BRR。
-
-
GPIO输入模式配置上拉下拉步骤
配置步骤:
1.通过GPIOX_CRL/H设置对应IO口CNF位为10:上拉/下拉输入(下图为CRL为例)
2.通过BSRR对对应上拉/下拉IO口执行置位操作即可。(附:图中TTL肖特基触发器即为施密特触发器:满足TTL电平规则置电平为0/1)
-
GPIO初始化顺序
(一般都是CRL/H->ODR,稳健起见还是CRL/H->BSRR~)
GPIO其他寄存器的映射、BSRR进行LED的控制:
//main.c
#include "stm32f10