idr寄存器、_STM32 GPIO寄存器 IDR ODR BSRR BRR
IDR是查看引脚电平状态用的寄存器,ODR是引脚电平输出的寄存器
下面内容的原文:http://m646208823.blog.163.com/blog/static/166902953201293132522237/
使用BRR和BSRR寄存器可以方便地快速地实现对端口某些特定位的操作,而不影响其它位的状态。
比如希望快速地对GPIOE的位7进行翻转,则可以:
GPIOE->BSRR = 0x80; // 置'1'
GPIOE->BRR = 0x80; // 置'0'
如果使用常规'读-改-写'的方法:
GPIOE->ODR = GPIOE->ODR | 0x80; // 置'1'
GPIOE->ODR = GPIOE->ODR & 0xFF7F; // 置'0'
有人问是否BSRR的高16位是多余的,请看下面这个例子:
假如你想在一个操作中对GPIOE的位7置'1',位6置'0',则使用BSRR非常方便:
GPIOE->BSRR = 0x00400080;
如果没有BSRR的高16位,则要分2次操作,结果造成位7和位6的变化不同步!
GPIOE->BSRR = 0x80;
GPIOE->BRR = 0x40;
规则:
一、置GPIOD->BSRR低16位的某位为'1',则对应的I/O端口置'1';而置GPIOD->BSRR低16位
的某位为'0',则对应的I/O端口不变。
二、置GPIOD->BSRR高16位的某位为'1',则对应的I/O端口置'0';而置GPIOD->BSRR高16位
的某位为'0',则对应的I/O端口不变。
三、置GPIOD->BRR低16位的某位为'1',则对应的I/O端口置'0';而置GPIOD->BRR低16位的
某位为'0',则对应的I/O端口不变。
例如:
1)要设置D0、D5、D10、D11为高,而保持其它I/O口不变,只需一行语句:
GPIOD->BSRR = 0x0C21;// 使用规则一
2)要设置D1、D3、D14、D15为低,而保持其它I/O口不变,只需一行语句:
GPIOD->BRR = 0xC00A;// 使用规则三
3)要同时设置D0、D5、D10、D11为高,设置D1、D3、D14、D15为低,而保持其它I/O口不变
,也只需一行语句:
GPIOD->BSRR = 0xC00A0C21;// 使用规则一和规则二
如果中断中要对IO口设置,最好使用BSRR和BRR操作,而不要用ODR .
idr寄存器、_STM32 GPIO寄存器 IDR ODR BSRR BRR相关推荐
- GPIO 配置之ODR, BSRR, BRR 详解
STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平.管脚对于位写1 gpio ...
- crh寄存器_STM32的寄存器控制SDA_IN()/SDA_OUT()
#define SDA_IN() {GPIOA->CRL&=0X0FFFFFFF;GPIOA->CRL|=(u32)8<<28;} #define SDA_OUT() ...
- ODR, BSRR, BRR的差别
ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平. 管脚对于位写1 gpio 管脚为高电平,写 0 为低电平 BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制 ...
- STM32单片机的GPIO寄存器CRL、CRH、IDR、ODR、BRSS、BRR
STM32的寄存器多如牛毛,要一个一个的弄清楚谈何容易呀,所以我们在学习的时候要抓住重点,挑重要的进行学习和记忆,因为STM32一个一个去配置寄存器的话相当的麻烦,我们实际开发的话也不会一个一个去配置 ...
- crh寄存器_STM32的CRH、CRL、ODR和IDR寄存器的使用总结
一.下载: STM32F103中文参考手册 二.CRH和CRL的介绍: CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制 ...
- STM32 BSRR BRR ODR 寄存器解析(F4系列已经去掉BRR寄存器了)
STM32 BSRR BRR ODR 寄存器解析(F4系列已经去掉BRR寄存器了) 一.用法 二.解释 三.BSRR.BRR. ODR 之间的关系 G0x0系列GPIO寄存器 F4系列GPIO寄存器( ...
- STM32 BSRR BRR ODR 寄存器解析
一.用法 经常会看到类似如下的宏定义语句,用于对已经初始化后的 IO 口输出高.低电平. #define SET_BL_HIGH() GPIOA->BSRR=GPIO_Pin_0 #define ...
- 【STM32】使用BRR与BSRR寄存器控制GPIO输出
使用BRR与BSRR寄存器控制GPIO输出 对比使用ODR寄存器与BRR寄存器+BSRR寄存器 - BRR与BSRR: Init: RCC->APB2ENR |= 1 << 5;GP ...
最新文章
- 格式化json_在Spring Boot中格式化JSON日期
- 频谱分析幅值单位_案例分享丨某水泥厂入窑斗提减速机不对中故障分析及处理...
- 面向对象的相关面试题
- 谷歌CEO支持欧盟禁止人脸识别!微软总裁:能用“手术刀”就别用“切肉刀”...
- 嵌入式Linux入门4:版本控制git的使用
- k折交叉验证法的额外步骤_教你几招蝴蝶结系法步骤,OMG!这怎么配都美
- sqlserver 缩小表空间
- 小程序 云函数 python_小程序云函数
- 方法、脚本-Pig Grunt之简单命令及实例说明-by小雨
- 《Perl语言入门》读书笔记(一)Perl简介
- Java SSM开发大众点评后端 Mybatis实战商城项目
- C#实现QQ空间登录
- psp模拟器完美字库_透过模拟器看见那个疯狂的学习机年代(模拟器篇)(待续)...
- 清理 Chrome DNS Cache
- 【SDCC 2016】未来应用,IBOS、爱范儿、滴滴出行、腾讯云的微信开发之路
- 增强现实(AR)、虚拟现实(VR)、混合现实(MR)之间有什么区别?
- tm1650中文资料_TM1650+msp430单片机 调试及遇到问题的总结
- 直播平台软件开发的前端如何实现整套视频直播技术流程
- 小技巧:如何让你办公更高效(技巧大集合持续更新中)!
- knockout入门(一)
热门文章
- 模拟电路虚短 虚断
- 内网穿透,让自己的电脑当服务器
- sql server XML中value(),exists(),nodes()方法
- 混合动力simulink模型 转卖新能源混动车型模式转换说明,包含HCU模式转换simulink框图及说明文档
- 灵 源 大 道 歌 · 曹 文 逸
- 根据缠论选择盘整股票或者期货合约
- 计算机科学学院宣传标语,师范学院宣传标语
- 【LWP,进程,线程】Linux
- linux 下的进程创建线程,Linux线程 之 线程 线程组 进程 轻量级进程(LWP)
- No.118 Pascal's Triangle ||