首页 > 解决方案 > STM32入门——写BSRR

问题描述

我最近买了一块 STM32f031K6 核板,我正在使用 STMcubeIDE 对其进行编程。我有编程 8 位 AVR 的经验,所以我试图弥合这和这之间的差距。

我被告知我可以写位,GPIOA->BSRR &= 1<<0;但我不确定这个语法在做什么, - 我是在写寄存器GPIOA,还是BSRR?我必须看哪个寄存器才能看到这种变化?

->语法表示什么?

标签: cembeddedmicrocontrollerstm32

解决方案


您正在写入外围设备中的BSRR寄存器。GPIOA

->运算符是从指向结构访问成员的 C 语法,在您的实例中GPIOA是指针,(*GPIOA).BSRR如果没有->运算符,则等效。

STM32 中的外设(例如 GPIO)是内存映射GPIOA的,指向微控制器内存空间内该外设的基地址。如下图所示,取自处理器的参考手册

在此处输入图像描述

正如@P__J__ 在他的回答中所说的那样,BSRR寄存器是只写的,所以你不应该使用&=运算符,这在上面链接的参考手册中也有描述。


推荐阅读