现在我正在阅读一本名为“Programming Embedded Systems”的初级水平书。它有一节介绍如何使用C来操作外围设备上的寄存器。
一开始我有一个例子,我就是没有。
uint32_t *pGpio0Set = (uint32_t *)(0x40E00018);
我认为这是一个指向32位无符号整数的指针。我还可以猜到,有问题的寄存器控制着GPIO,寄存器位于地址0x40E00018。
我不明白的是前面的(uint32_t *)(0x40E00018)是什么意思以及它有什么影响。
安德鲁
答案 0 :(得分:1)
它被称为type cast。它通常将类型转换为另一种类型。在这种情况下,它将十六进制数转换为地址。该十六进制数周围的括号是多余的。
答案 1 :(得分:0)
这是从整数类型到指向整数的指针的转换 如果您不这样做,编译器会抱怨您将整数分配给其他类型。即使指针 大多只是一个整数(在任何平台上都不是这样),编译器想要确定,你真的打算使用该数字作为地址。