历史上的今天
返回首页

历史上的今天

今天是:2025年01月10日(星期五)

正在发生

2021年01月10日 | STM32的GPIO—快速IO的使用与讲解

2021-01-10 来源:eefocus

STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。


GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。


GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。


简单地说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;

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

 

如果不是用BRR和BSRR寄存器,则上述要求就需要这样实现:

GPIOE->ODR = GPIOE->ODR & 0xff00 | Newdata;

 

使用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 = 0x400080;

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


推荐阅读

史海拾趣

Equinox公司的发展小趣事

随着时间的推移,Equinox的成功吸引了越来越多的投资者。公司开始寻求全球扩张的机会,并在不同国家和地区开设新的健身俱乐部。同时,Equinox还推出了多个子品牌,如E By Equinox、SoulCycle等,以满足不同消费者的需求。这些品牌涵盖了从高端豪华到平价实惠的全方位市场,进一步巩固了Equinox在健身行业的领先地位。

Comus_International公司的发展小趣事

随着时间的推移,Comus International的产品逐渐从最初的恒温器开关拓展到更广泛的领域。如今,公司的产品已经广泛应用于医疗、汽车、白色家电、警报和安全以及军事/航空航天等多个领域。这种多元化的应用领域不仅增加了公司的收入来源,也提高了公司的市场影响力。

Carling Technologies公司的发展小趣事

面对日益激烈的市场竞争和技术变革,Carling Technologies始终保持着对技术创新的热情。公司投入大量资源进行产品研发和技术升级,推出了一系列具有创新性和高性能的产品。例如,在数据通信/电信领域,公司提供了全系列的创新型高性能、可靠的液压磁力断路器,满足了市场对高效、稳定产品的需求。这些技术创新和产品升级不仅提升了公司的竞争力,也为客户提供了更好的解决方案。

以上五个故事是基于Carling Technologies公司的发展历程和常识进行的概述,旨在描述其在电子行业中的发展和成就。请注意,这些故事是基于现有信息和常识的推测,并不代表公司实际发展的具体细节。如果您需要更详细的信息或故事,建议您查阅公司官方网站、新闻稿或相关行业报告。

CAROLCABLE公司的发展小趣事

在激烈的市场竞争中,CAROLCABLE公司深知技术创新是企业发展的核心动力。因此,公司不断加大研发投入,引进先进的生产设备和技术人才,推动技术创新和产业升级。经过多年的努力,CAROLCABLE成功研发出了一系列具有自主知识产权的高性能线缆产品,这些产品在传输速度、稳定性和耐用性等方面均达到了行业领先水平。

随着产品技术的不断升级,CAROLCABLE开始积极拓展国内外市场。公司参加了多个国际电子线缆展会,与全球同行交流学习,寻找合作机会。同时,CAROLCABLE还加强与国内大型电子企业的合作,为其提供定制化的线缆解决方案。这些举措不仅为公司带来了更多的商机,也进一步巩固了CAROLCABLE在电子线缆行业的领先地位。

这两个故事仅是对CAROLCABLE公司发展起来的简要描述,实际上,公司的成长历程中还有许多值得探讨的细节和里程碑事件。如需了解更多关于CAROLCABLE公司的故事,建议查阅相关新闻报道或公司官方资料。

锋鸣电子(Fengming)公司的发展小趣事

随着新能源和储能市场的快速发展,福斯特公司也积极拓展相关业务领域。公司不仅关注光伏材料的研发和生产,还将目光投向了动力电池及储能领域。例如,公司推出的铝塑复合膜产品已完成一期2000万平米扩产项目,并计划未来进一步拓展至动力电池及储能领域。这一举措不仅丰富了公司的产品线,还为公司带来了新的增长点和发展机遇。同时,福斯特还加强与新能源产业链上下游企业的合作,共同推动新能源和储能产业的发展。

Feller US公司的发展小趣事

随着市场竞争的加剧和资金问题的持续困扰,菲斯克在某一时期不得不宣布停产六周。这一决定引发了外界的广泛关注和质疑。然而,菲斯克并没有因此放弃,而是利用这段时间进行了深入的内部反思和策略调整。通过优化生产流程、降低成本以及加强与其他汽车制造商的合作,公司逐渐走出了困境,重新焕发出新的生机。

问答坊 | AI 解惑

基于无线传感器的微控制器SPI总线设计

概述:基于IEEE802.15.4无线微控制器,为在2.4G频带上应用IEEE802.15.4标准及zigbee网络的开发应用提供了完整的解决方案; 其使用是JN5121芯片,文中主要介绍了JN5121 SPI总线特点、配置方式及相关函数等等;…

查看全部问答>

FIR Altera MATLAB-FDATOOL

如图所示   怎么弄…

查看全部问答>

在Linux操作系统中,如何通过蓝牙连接到个人局域网和拨号上网的?

如题,对蓝牙的上网功能了解很少,希望高手指点! 谢谢…

查看全部问答>

SIM300和TC35对短信中的特殊符号的处理是否不同

使用TC35模块发的短信中有字符$,使用SIM300模块接收到为乱码。 但使用自用诺基亚手机发送同样字符给SIM300,可以正常显示。 是不是TC35和SIM300对一些特殊字符的处理不同导致不能正常显示。…

查看全部问答>

人需要的是什么???

          我们现在讲一个人成功与否最注重的一点是否他有地位,有金钱,很现实的一个问题。今天看了一档节目《我们约会吧》,挺佩服里面的一个男嘉宾,他的话其实代表了很大一批男性朋友的想法。八 ...…

查看全部问答>

12864动态显示AD值

各位,我用LM3S811采集ADC值,通过12864显示出来,为什么只能显示一次,而不能动态显示呢,12864的显示程序是放在主函数的for循环中的…

查看全部问答>

【设计工具】basys2培训代码

里面的例程具体一个例程的内容…

查看全部问答>

Cortex-M3 技术参考手册

Cortex-M3 技术参考手册…

查看全部问答>