STM32裸机学习笔记(三)—寄存器映射之BSRR与延时的爱恨情仇

STM32裸机学习笔记(三)—寄存器映射之BSRR与延时的爱恨情仇

GPIO与引脚区别?
  • GPIO包含在引脚内(引脚内还有电源、晶振等特殊功能引脚),除GPIO拓展内容即为单片机最小系统

GPIO功能如何检索?
  • 通过芯片datasheet中的pin definitions去检索GPIO功能

输出控制
  • 推挽输出(ODR寄存器输出1时推出3.3V/25mA,输出0时拉入GND)image-20200610184810766

  • 开漏输出(只能输出低电平,开漏时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 "stm32f10x.h"

void delay(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值