使用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 .

转载自:http://m646208823.blog.163.com/blog/static/166902953201293132522237/

GPIO口 多引脚操作相关推荐

  1. GPIO口模拟I2C操作

    /*         作者:天空         日期:2014.5.12         功能:利用GPIO口模拟I2C总线,对传感器寄存器读取数据         注意:如果需要移植些文件到其他设 ...

  2. STM8单片机GPIO口的驱动深度解析

    上一节给大家介绍了STM8标准库的移植,本节课开始学习我们单片机的外设的驱动,单片机基本的外设资料包括GPIO.外部中断.定时器.串口等,本节先给大家介绍一下STM8单片机的GPIO口. 我们先不介绍 ...

  3. gpio-sunxi驱动应用gpio口终端操作

    内核里gpiolib可以操作gpio口,但基本只能作输入或输出功能.而全志的gpio控制器除这两种功能外,还提供了其它功能,如配置gpio的上下拉,输出电流等级大小等.所以全志提供了类似gpiolib ...

  4. 启明云端分享|ESP32学习笔记参考GPIO口操作

    提示:作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考.同时也用 ...

  5. MTK 驱动开发(3)---GPIO口的使用方法汇总

    1简介 GPIO=General Purpose Input Output,通用输入输出.有时候简称为"IO口".通用,就是说它是万金油,干什么都行.输入输出,就是说既能当输入口使 ...

  6. gpio控制和相关操作

    一.gpio基础信息 现在总结下GPIO口的八种工作状态,其中四种输入状态,四种输出状态 参考:GPIO口的八种工作状态_沙漠那点绿的博客-CSDN博客_gpio三种状态 输入: 1 上拉输入:默认情 ...

  7. 番外篇:STM32之GPIO口速率配置究竟代表什么

    番外篇:STM32之GPIO口速率配置究竟代表什么 用过STM32的童鞋们都知道,STM32在GPIO配置时都需要选择一个GPIO速率,对于STM32F103系列芯片来说最快的配置应该是50Mhz左右 ...

  8. GPIO口有关上拉电阻和下拉电阻推挽输出开漏(OD)和开集(OC)

    嵌入式软件开发中,操作GPIO口是最常见的事情,可以通过软件配置GPIO口的模式,比如输入或输出,上拉或下拉,推挽或开漏等等,为了理解这些概念需要查看芯片内部GPIO口电路图. 1.推挽输出:推状态时 ...

  9. k60的GPIO口配置

    写一下自己在智能车比赛学习到的一些东西吧,有点零散,趁此机会进行梳理一下,内容不是很深. 在智能车中用到GPIO口的地方有按键引脚.拨码开关引脚.舵机.摄像头数据口.场信号口.PLCK信号口等,而电感 ...

最新文章

  1. 将输出的数据按照表格的形式进行输出
  2. python准备_python环境准备
  3. inssider v4.3.7 key_小布翻译软件下载-小布翻译器 v2.5.1 免费版
  4. lvs服务器需要开启web服务么_Centos7搭建LVS+Keepalived高可用Web
  5. 设计模式之MVC设计模式初阶
  6. 保护私有信息的叉积协议及其应用 in c
  7. Atitit 遍历 与循环模式大总结 目录 1.1. 遍历的对象 数组 或对象 或对象数组 1 2. 遍历的概念 2 2.1. 祖先后代同胞 过滤 2 3. 常见的遍历四种方式 2 3.1.
  8. 对费曼来说,“不可能”意味着什么?
  9. Xshell超250+配色方案(主题) 及其推荐
  10. 数据可视化:基本图表
  11. 完美解决Can‘t locate Data/Dumper.pm in @INC
  12. Hark的数据结构与算法练习之桶排序
  13. 数据分析师常见面试题.
  14. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 D【队列】
  15. git_describe
  16. vue之Excel导出和导入
  17. 单片机之震动传感器、继电器、433M无线发射接收等模块介绍及应用
  18. Vuex实战项目—ToDoList代码及流程详解
  19. 《Spark商业案例与性能调优实战100课》第25课:Spark Hash Shuffle源码解读与剖析
  20. 煽情的儿子527=随笔

热门文章

  1. Idea输入汉字变成繁体字
  2. 详解OPC协议-工业控制和自动化领域的接口标准
  3. 辽宁大学新闻与传播硕士(MJC)专业考研上岸经验分享
  4. Could not connect to SMTP host: smtp.163.com, port: 465, response: -1
  5. Linux中set -x 与 set +x命令的使用
  6. xmind8使用甘特图与导出甘特图PDF
  7. 新仙剑奇侠传java,新仙剑奇侠传问题
  8. 怎么把Word转换成PDF?这几种转换神器分享给你
  9. 存储函数与存储过程(有这一篇就够了)
  10. POBPM集成-数据过滤