这是我无法理解的微 Controller 代码的一部分。
#define GPIO_PORTF_DIR_R (*((volatile unsigned long *)0x40025400))
int main (void){
GPIO_PORTF_DIR_R = 0x0E;
...}
据我了解,GPIO_PORTF_DIR_R 不是变量,(*((volatile unsigned long *)0x40025400)) 是指向的地址的内容。 那么如何将 GPIO_PORTF_DIR_R 用作变量。这里发生了什么。
最佳答案
#define
声明了一个预处理器宏。这意味着在编译之前,GPIO_PORTF_DIR_R
将被替换为宏的内容。所以你实际编译的代码将是
(*((volatile unsigned long *)0x40025400)) = 0x0E;
这几乎意味着将 0x0E
写入该地址。
如果您希望通过名称引用某些(复杂的)数值,通常会使用预处理器宏。这允许您在必要时集中更改该值,但在您的代码中有一个有意义的名称,而不必为其设置变量。
关于c - 了解部分代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734341/