历史上的今天

今天是:2024年09月23日(星期一)

正在发生

2020年09月23日 | GPIO 配置之ODR, BSRR, BRR 详解

发布者:Huanle 来源: eefocus关键字:GPIO  配置  ODR  BSRR  BRR 手机看文章 扫描二维码
随时随地手机看文章

用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态.

ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。

管脚对于位写1 gpio 管脚为高电平,写 0 为低电平

BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制管脚为低电平。
对寄存器高 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 ------- 个人经验判断意法半导体仅仅是为了程序员操作方便估计做么做的。

因为BSRR的 低 16bsts 恰好是set操作,而高16bit是 reset 操作 而BRR 低 16bits 是reset 操作。

简单地说GPIOx_BSRR的高16位称作清除寄存器,而GPIOx_BSRR的低16位称作设置寄存器。

另一个寄存器GPIOx_BRR只有低16位有效,与GPIOx_BSRR的高16位具有相同功能。

举个例子说明如何使用这两个寄存器和所体现的优势。

例如GPIOE的16个IO都被设置成输出,而每次操作仅需要

改变低8位的数据而保持高8位不变,假设新的8位数据在变量Newdata中,

这个要求可以通过操作这两个寄存器实现,STM32的固件库中有两个函数

GPIO_SetBits()和GPIO_ResetBits()使用了这两个寄存器操作端口。

上述要求可以这样实现:

GPIO_SetBits(GPIOE, Newdata & 0xff);
GPIO_ResetBits(GPIOE, (~Newdata & 0xff));

也可以直接操作这两个寄存器:

GPIOE->BSRR = Newdata & 0xff;
GPIOE->BRR = ~Newdata & 0xff;

当然还可以一次完成对8位的操作:

GPIOE->BSRR = (Newdata & 0xff) | ( (~Newdata & 0xff)<<16 );

当然还可以一次完成对16位的操作:

GPIOE->BSRR = (Newdata & 0xffff) | ( (~Newdata )<<16 );

从最后这个操作可以看出使用BSRR寄存器,可以实现8个端口位的同时修改操作。

有人问是否BSRR的高16位是多余的,请看下面这个例子:

假如你想在一个操作中对GPIOE的位7置'1',位6置'0',则使用BSRR非常方便: 
  GPIOE->BSRR = 0x400080; 

如果没有BSRR的高16位,则要分2次操作,结果造成位7和位6的变化不同步! 
  GPIOE->BSRR = 0x80; 
  GPIOE->BRR = 0x40;

BSRR还有一个特点,就是Set比Reset的级别高,

就是说同一个bit又做Set又做Reset,最后结果是Set

要同步变化只要简单的 GPIOx->BSRR = 0xFFFF0000 | PATTEN;

即可,不用考虑哪些需要置1,哪些需要清零

从最后这个操作可以看出使用BSRR寄存器,可以实现8个端口位的同时修改操作。


关键字:GPIO  配置  ODR  BSRR  BRR 引用地址:GPIO 配置之ODR, BSRR, BRR 详解

上一篇:STM32 常用GPIO操作函数记录
下一篇:STM32F4先设置寄存器还是先使能时钟

推荐阅读

    估值暴跌,融创拿下新乐视智家和乐视影业,孙宏斌没有放弃乐视。  “如果乐视有谁愿意接盘,你帮我问下,我打九折卖给他。”今年3月在融创中国2017年业绩发布会上,当记者问道融创“会不会把乐视卖了?”融创中国董事局主席孙宏斌如此回答。  2017年融创中国对乐视系有关公司的投资减值拨备合计金额达165.6亿元。按照孙宏斌的说法,不仅是壮士...
(文章来源:新华社客户端) 以“智能、互联——赋能产业新发展”为主题的第21届中国国际工业博览会日前在上海落幕。本届工博会吸引境内外专业观众18.2万人次,较去年同期增长4.5%。据了解,本届工博会上有100多款尖端技术和产品首发首展,包括智能动态物流车、xMate柔性机器人、自适应机械臂等,涉及人工智能、机床、自动化、机器人、工业互联网、数字...
据国外媒体报道,在5nm工艺今年一季度投产,为苹果等客户代工最新的处理器之后,芯片代工商台积电下一步的工艺研发重点就将是更先进的3nm和2nm工艺。 在7月16日的二季度财报分析师电话会议上,台积电CEO魏哲家透露,他们3nm工艺的研发正在按计划推进,仍将采用成熟的鳍式场效应晶体管技术(FinFET),计划在明年风险试产,2022年下半年大规模投产。 与多...
ADI公司无线BMS助力路特斯重塑电动汽车的机动性中国,北京–2021年9月23日–Analog Devices, Inc. 宣布英国知名品牌路特斯汽车计划在其下一代电动汽车(EV)架构中采用ADI的无线电池管理系统(无线BMS)。ADI的无线BMS凭借不断提升的设计灵活性、更高的电池可维护性以及更轻的重量,成为路特斯之选。此次工程合作将助力路特斯安全稳步扩展其未来电动汽车平...

史海拾趣

问答坊 | AI 解惑

五种最容易被老板开除的人

被开除是最难堪的,但知道为什么被开除吗?老板心中的那把尺在哪里?   1.不懂得承担责任的人:有些人不愿意承担责任,只想到得到多少,而不是自己贡献多少的,形成了管理障碍。   2.缺乏团队精神的人:许多人过于专注于自己的专业上,不太注意 ...…

查看全部问答∨

求救啊!!数控电压源相关原理图!

本帖最后由 paulhyde 于 2014-9-15 09:45 编辑 设计出有一定输出电压范围和功能的数控电压源 基本要求   (1)输出电压:范围0~+9.9V,步进0.1V,纹波不大于10mV;   (2)输出电流:500mA;   (3)输出电压值由数码管显示;   ...…

查看全部问答∨

请问各位,哪里有便宜的以太网控制芯片?

我在网上查,最便宜的 RTL8019AS也要12RMB/个 我现在做的一个小东西需要一个以太网控制器加RJ45口,订货量可以非常大,10K - 100K,但是成本非常关键,如果太贵,项目肯定被踢掉了 另外也问了dm9000, 比realtek得还要贵 我的要求很简单,就是支 ...…

查看全部问答∨

protel99se鼠标增强器出现问题

大家好:我的protel99se的鼠标增强器出现了点小问题 同样的增强器版本(第三版),同样的设置(开机自动运行),在别人的机子上都是好好的 在我的笔记本就是开机时会自动弹出一个类似于记事本的 protel99seMex.ini文件里面的内容显示如下: [All ...…

查看全部问答∨

寻找在上海的比较好的嵌入式培训机构!! 大家多给些建议

寻找在上海的比较好的嵌入式培训机构!!   大家多给些建议…

查看全部问答∨

自己编写第三方TSP,数据传输用,做过的兄弟给点思路!!!!

急啊,现在完全都没有思路,这个好像和电话TSP不一样,那位兄弟做过的指点一下啊!!!…

查看全部问答∨

用evc编译成功的程序想在U盘上在wince下运行怎么操作 请各位大侠指教

用evc编译成功的程序通过USB下载到系统中可以运行 现在想放在U盘上在wince下运行怎么操作 请各位大侠指教…

查看全部问答∨

阿牛哥看ADI的光端机和视频服务器解决方案

    阿牛哥拜访华北地区的一些光端机和视频服务器制造商朋友,也看到很多专业做光端机和视频服务器一篮子解决方案的供应商。有很多是用到TI ,ADI ,NS 等美系品牌方案,阿牛哥查查这些制造商朋友的BOM,基本都有选用ADI 的两颗料: AD ...…

查看全部问答∨

cadence问题三则?

一、cadence原理图设计中的端口有什么作用?端口号相同是否表示这两个端互连?端口与端口互连是否可以用网络标号? 二、网络标号有什么作用?总线上加网络标号有什么意义?总线和总线相连是否可以用网络标号? 三、上图中的TP6是什么符号?代表什 ...…

查看全部问答∨

江苏省电子设计大赛

明天江苏省的电子设计大赛就要正式拉开帷幕了,我们将在这个没有硝烟的战场上奋战3夜4天,希望一切都好,不要有意外的发生。我们不奢求拿一等奖或者说是拿到多么好的名次,我们只希望我们这一个多月的付出(特别是XW的付出)能够得到一点点回报,让 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved