STM32 GPIO 配置之ODR, BSRR, BRR 详解
来源:互联网 发布:淘宝超级店长 编辑:程序博客网 时间:2024/05/19 13:07
Author:DriverMonkey
Mail:bookworepeng@Hotmail.com
QQ:196568501
Phone:13410905075
欢迎交流!
用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态.
ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。管脚对于位写1 gpio 管脚为高电平,写 0 为低电平
BSRR 只写寄存器:既能控制管脚为高电平,也能控制管脚为低电平。对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。写 0 ,无动作
BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器 管脚对于位写 1 相应管脚会为低电平。写 0 无动作。
刚开始或许你跟我一样有以下疑惑:
1.既然ODR 能控制管脚高低电平为什么还需要BSRR和SRR寄存器?
2.既然BSRR能实现BRR的全部功能,为什么还需要SRR寄存器?
对于问题 1 ------ 意法半导体给的答案是---“This way, there is no risk that an IRQ occurs between the read and the modify access.”
什么意思呢?就就是你用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。也就不需要关闭中断。
用ODR操作GPIO的伪代码如下:
disable_irq()
save_gpio_pin_sate = read_gpio_pin_state();
save_gpio_pin_sate = xxxx;
chang_gpio_pin_state(save_gpio_pin_sate);
enable_irq();
关闭中断明显会延迟或丢失一事件的捕获,所以控制GPIO的状态最好还是用SBRR和BRR
对于问题 2 ------- 个人经验判断意法半导体仅仅是为了程序员操作方便估计做么做的。
因为SBRR的 低 16bsts 恰好是set操作,而高16bit是 reset 操作
而BRR 低 16bits 是reset 操作
如有不对欢迎指正!
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
- STM32 通用输入输出端口GPIO BRR、BSRR、ODR寄存器详解
- STM32 GPIO寄存器ODR BSRR BRR
- STM32 BSRR BRR ODR 寄存器解析
- 高手带你解析STM32 BSRR BRR ODR 寄存器
- STM32 GPIO BRR和BSRR寄存器
- STM32 BSRR BRR
- STM32使用BSRR和BRR寄存器快速操作GPIO端口
- GPIO的寄存器BSRR和BRR
- 关于GPIO的BSRR和BRR寄存器
- STM32 GPIOx通用输入输出I/O端口的BSRR寄存器与BRR功能简述
- 关于STM32_GPIO的BSRR和BRR寄存器
- STM32学习笔记之GPIO配置问题
- stm32学习笔记之GPIO配置
- STM32 GPIO配置
- STM32 GPIO 寄存器配置
- app上架遇到的问题
- 面试:java_统计字符串中对称的子字符串个数
- chrome 桌面通知 Notifications 用法
- UIColor
- Python&OpenCV - 随机生成图像 与 图像的转维(reshape)
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
- 2.3.3.4: 属性过滤选择器
- IOS开发中 字符串和数组NSString NSArray操作
- Oracle SQL*PLUS基础及sqlplus命令详解-1
- C# 的函数编程
- C语言中的32个关键字及其意思
- Qt-》QAudioOutput play 播放wav文件
- JavaScript CSS Style属性对照表
- Oracle SQL*PLUS基础及sqlplus命令详解-2