Puchou 发表于 2025-8-26 10:46

STM32的BRSS和BRR寄存器

GPIOC->BSRR = GPIO_Pin_10      //将PC10设为高电平
GPIOC->BRR= GPIO_Pin_10      //将PC10设为低电平

GPIOx->BSRR是STM32微控制器GPIO模块的32位端口位设置/清除寄存器,高16位31:16写1则对应的ODRy位0,低16位15:0写1则对应的ODRy位1,写0无反应,而GPIO一共15个引脚,

#define GPIO_Pin_0               ((uint16_t)0x0001)
#define GPIO_Pin_1               ((uint16_t)0x0002)
#define GPIO_Pin_2               ((uint16_t)0x0004)
···
#define GPIO_Pin_10                ((uint16_t)0x0400)
#define GPIO_Pin_11                ((uint16_t)0x0800)
#define GPIO_Pin_12                ((uint16_t)0x1000)
#define GPIO_Pin_13                ((uint16_t)0x2000)
#define GPIO_Pin_14                ((uint16_t)0x4000)
#define GPIO_Pin_15                ((uint16_t)0x8000)

所以GPIOC->BSRR = GPIO_Pin_10 => GPIOC->BSRR = 0x0400 =0100 0000 0000,相当于将第10位写1,对应的引脚就置为1。

GPIOx->BRR是STM32微控制器GPIO模块的32位清除寄存器,高16位31:16无作用,低16位15:0写1则对应的ODRy位0,所以GPIOC->BRR= GPIO_Pin_10 => GPIOC->BRR = 0x0400 =0100 0000 0000,相当于将第10位写1,对应的引脚就置为0。
————————————————
版权声明:本文为CSDN博主「小盆油」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Woaishaqian/article/details/149937485

页: [1]
查看完整版本: STM32的BRSS和BRR寄存器