在硬件外设中设置寄存器

时间:2012-04-25 03:13:13

标签: c pointers cpu-registers

现在我正在阅读一本名为“Programming Embedded Systems”的初级水平书。它有一节介绍如何使用C来操作外围设备上的寄存器。

一开始我有一个例子,我就是没有。

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

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

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

安德鲁

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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