2012-04-25 29 views
0

現在我正在閱讀一本名爲「編程嵌入式系統」的初學者級書籍。它有一個部分解釋瞭如何使用C來操縱外設上的寄存器。在硬件外設中設置寄存器

它有一個例子,我剛開始不明白。

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

我認爲這是聲明一個指向32位無符號整數的指針。我還可以猜測,所討論的寄存器控制着GPIO,寄存器位於地址0x40E00018處。

我不明白的是(uint32_t *)在前面(0x40E00018)的含義和它有什麼作用。

安德魯

回答

1

它被稱爲type cast。它通常將類型轉換爲另一種類型。在這種情況下,它將十六進制數轉換爲地址。圍繞該十六進制數字的括號是多餘的。

0

這是從整數類型轉換爲指向整數的指針。
如果你不這樣做,編譯器會投訴你將一個整數分配給不同的類型。即使是一個指針大多隻是一個整數(在任何平臺上都不是這樣),編譯器希望確定,您確實打算將該數字用作地址。