c - STM32入门——写BSRR
问题描述
我最近买了一块 STM32f031K6 核板,我正在使用 STMcubeIDE 对其进行编程。我有编程 8 位 AVR 的经验,所以我试图弥合这和这之间的差距。
我被告知我可以写位,GPIOA->BSRR &= 1<<0;
但我不确定这个语法在做什么, - 我是在写寄存器GPIOA
,还是BSRR
?我必须看哪个寄存器才能看到这种变化?
->
语法表示什么?
解决方案
您正在写入外围设备中的BSRR
寄存器。GPIOA
->
运算符是从指向结构访问成员的 C 语法,在您的实例中GPIOA
是指针,(*GPIOA).BSRR
如果没有->
运算符,则等效。
STM32 中的外设(例如 GPIO)是内存映射GPIOA
的,指向微控制器内存空间内该外设的基地址。如下图所示,取自处理器的参考手册。
正如@P__J__ 在他的回答中所说的那样,BSRR
寄存器是只写的,所以你不应该使用&=
运算符,这在上面链接的参考手册中也有描述。
推荐阅读
- c# - VB.NET 到 C# 字符串数组的转换
- python-3.x - 如何在 S3 中读取示例记录镶木地板文件?
- android - 如何同时显示viewPager中的所有选项卡
- java - 使用 Jackson 解析嵌套 JSON 时,首选方法是 ArrayNode 还是 TypeReference?
- php - Symfony - mysql 列总和
- angular - Typescript/Angular 2 - 过滤掉不包含特定字符串属性的对象
- javascript - How to make date fields in app independent of system timezone?
- java - JDBC DriverManager detect if the user is on the network before trying to connect to the database?
- r - Issue inserting image in header
- database-design - 这种设计对于小型图书馆管理系统是否足够?