您的位置 首页 FPGA

STM32 GPIO BRR和BSRR寄存器

使用BRR和BSRR寄存器可以方便地快速地实现对端口某些特定位的操作,而不影响其它位的状态。比如希望快速地对GPIOE的位7进行翻转,则可以:G

运用BRRBSRR寄存器能够便利地快速地完成对端口某些特定位的操作,而不影响其它位的状况。

比方期望快速地对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 .

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/259354.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部