0

现在我正在阅读一本名为“Programming Embedded Systems”的入门级书籍。它有一节解释如何使用 C 操作外围设备上的寄存器。

它一开始就有一个例子,我只是不明白。

uint32_t *pGpio0Set = (uint32_t *)(0x40E00018);

我认为这是在声明一个指向 32 位无符号整数的指针。我还可以猜测的是,有问题的寄存器控制着一个 GPIO,并且该寄存器位于地址 0x40E00018。

我不明白的是 (0x40E00018) 前面的 (uint32_t *) 是什么意思以及它有什么作用。

安德鲁

4

2 回答 2

1

它被称为类型转换。它通常将一种类型转换为另一种类型。在这种情况下,它将十六进制数转换为地址。该十六进制数字周围的括号是多余的。

于 2012-04-25T03:15:06.287 回答
0

这是从整数类型转换为指向整数的指针。
如果您不这样做,编译器会抱怨您将整数分配给不同的类型。即使是指针大多只是一个整数(在任何平台上都不是这样),编译器希望确定您确实打算使用该数字作为地址。

于 2012-04-25T03:15:26.763 回答