考虑一下:
(volatile unsigned long *) 0x4000703C
这句话是否意味着我们将指针指向地址0x4000703C
?和
#define STEPPER (*((volatile unsigned long *)0x4000703C))
void Step(void){
STEPPER = 10;
STEPPER = 9;
STEPPER = 5;
STEPPER = 6;
}
STEPPER
是地址0x4000703C
处指针的顺序,我们直接写入0x4000703C
。这是对的吗?
答案 0 :(得分:2)
这个陈述是否意味着我们声明了一个指向地址的指针
不,声明包含标识符,在本例中为变量名称。你有一个操作,它将一个整数强制转换为指针类型,指向0x4000703C
。什么都没有宣布。
STEPPER是地址0x4000703C处指针的延迟,我们直接写入0x4000703C。这是对的吗?
是。 0x4000703C
的内存当然完全是系统特定的。
答案 1 :(得分:1)
您正在虚拟内存中直接写入该地址,是的。
答案 2 :(得分:0)
该技术广泛用于嵌入式系统编程以定义硬件寄存器。
更新
以防万一,可能想了解更多关于在嵌入式系统领域使用此技术的人: