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相关推荐

  1. GPIO 配置之ODR, BSRR, BRR 详解

    STM32 GPIO 配置之ODR, BSRR, BRR 详解 用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能 ...

  2. STM32 GPIO 配置之ODR, BSRR, BRR 详解

    用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态. ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平.管脚对于位写1 gpio ...

  3. crh寄存器_STM32的寄存器控制SDA_IN()/SDA_OUT()

    #define SDA_IN() {GPIOA->CRL&=0X0FFFFFFF;GPIOA->CRL|=(u32)8<<28;} #define SDA_OUT() ...

  4. ODR, BSRR, BRR的差别

    ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平. 管脚对于位写1 gpio 管脚为高电平,写 0 为低电平 BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制 ...

  5. STM32单片机的GPIO寄存器CRL、CRH、IDR、ODR、BRSS、BRR

    STM32的寄存器多如牛毛,要一个一个的弄清楚谈何容易呀,所以我们在学习的时候要抓住重点,挑重要的进行学习和记忆,因为STM32一个一个去配置寄存器的话相当的麻烦,我们实际开发的话也不会一个一个去配置 ...

  6. crh寄存器_STM32的CRH、CRL、ODR和IDR寄存器的使用总结

    一.下载: STM32F103中文参考手册 二.CRH和CRL的介绍: CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制 ...

  7. STM32 BSRR BRR ODR 寄存器解析(F4系列已经去掉BRR寄存器了)

    STM32 BSRR BRR ODR 寄存器解析(F4系列已经去掉BRR寄存器了) 一.用法 二.解释 三.BSRR.BRR. ODR 之间的关系 G0x0系列GPIO寄存器 F4系列GPIO寄存器( ...

  8. STM32 BSRR BRR ODR 寄存器解析

    一.用法 经常会看到类似如下的宏定义语句,用于对已经初始化后的 IO 口输出高.低电平. #define SET_BL_HIGH() GPIOA->BSRR=GPIO_Pin_0 #define ...

  9. 【STM32】使用BRR与BSRR寄存器控制GPIO输出

    使用BRR与BSRR寄存器控制GPIO输出 对比使用ODR寄存器与BRR寄存器+BSRR寄存器 - BRR与BSRR: Init: RCC->APB2ENR |= 1 << 5;GP ...

最新文章

  1. 格式化json_在Spring Boot中格式化JSON日期
  2. 频谱分析幅值单位_案例分享丨某水泥厂入窑斗提减速机不对中故障分析及处理...
  3. 面向对象的相关面试题
  4. 谷歌CEO支持欧盟禁止人脸识别!微软总裁:能用“手术刀”就别用“切肉刀”...
  5. 嵌入式Linux入门4:版本控制git的使用
  6. k折交叉验证法的额外步骤_教你几招蝴蝶结系法步骤,OMG!这怎么配都美
  7. sqlserver 缩小表空间
  8. 小程序 云函数 python_小程序云函数
  9. 方法、脚本-Pig Grunt之简单命令及实例说明-by小雨
  10. 《Perl语言入门》读书笔记(一)Perl简介
  11. Java SSM开发大众点评后端 Mybatis实战商城项目
  12. C#实现QQ空间登录
  13. psp模拟器完美字库_透过模拟器看见那个疯狂的学习机年代(模拟器篇)(待续)...
  14. 清理 Chrome DNS Cache
  15. 【SDCC 2016】未来应用,IBOS、爱范儿、滴滴出行、腾讯云的微信开发之路
  16. 增强现实(AR)、虚拟现实(VR)、混合现实(MR)之间有什么区别?
  17. tm1650中文资料_TM1650+msp430单片机 调试及遇到问题的总结
  18. 直播平台软件开发的前端如何实现整套视频直播技术流程
  19. 小技巧:如何让你办公更高效(技巧大集合持续更新中)!
  20. knockout入门(一)

热门文章

  1. 模拟电路虚短 虚断
  2. 内网穿透,让自己的电脑当服务器
  3. sql server XML中value(),exists(),nodes()方法
  4. 混合动力simulink模型 转卖新能源混动车型模式转换说明,包含HCU模式转换simulink框图及说明文档
  5. 灵 源 大 道 歌 · 曹 文 逸
  6. 根据缠论选择盘整股票或者期货合约
  7. 计算机科学学院宣传标语,师范学院宣传标语
  8. 【LWP,进程,线程】Linux
  9. linux 下的进程创建线程,Linux线程 之 线程 线程组 进程 轻量级进程(LWP)
  10. No.118 Pascal's Triangle ||