use*_*954 1 c embedded microcontroller arm
为什么当我们为寄存器写入地址时,我们将偏移量添加到基址?
另外我们为什么要编写如下语法
#define CGPIO (*((volatile unsigned long*)0x400FE608));
Run Code Online (Sandbox Code Playgroud)
我的意思是指针部分语法
该(volatile unsigned long*)0x400FE608语法在存储器蒙上了特定于硬件的地址,大概的寄存器的,以指针volatile unsigned long.指针的类型volatile unsigned long取决于寄存器的大小,以及将其视为无符号的需要.指针定义为指向以volatile确保编译器不优化多次读取和写入,每次代码需要时执行操作.
前面的星号和整个表达式的括号是这样的,你可以把CGPIO它看作是一个可赋值的全局变量,然后写
CGPIO = 123;
Run Code Online (Sandbox Code Playgroud)
和
unsigned long val = CGPIO;
Run Code Online (Sandbox Code Playgroud)
没有在前面添加星号CGPIO.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |