2012-04-25 8 views
0

今は「Programming Embedded Systems」という初心者レベルの本を読んでいます。これは、Cを使用して周辺機器上のレジスタを操作する方法を説明する1つのセクションを持っています。ハードウェア周辺機器にレジスタを設定する

これは私が得ることができない最初の例があります。

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

これは32ビットの符号なし整数へのポインタを宣言していると思います。私が推測できるのは、問題のレジスタがGPIOを制御し、そのレジスタがアドレス0x40E00018にあることです。

先ほどの(uint32_t *)先行(0x40E00018)の意味とその効果については分かりませんが、

それはtype castと呼ばれていますアンドリュー

答えて

1

。一般的には、型を別の型に変換します。この場合、16進数をアドレスに変換します。その16進数のまわりのカッコは余分です。

0

これは、整数型から整数へのポインタへのキャストです。
そうしないと、コンパイラは整数を別の型に代入すると苦情を言います。 のポインタでさえ、はほとんどの場合単純に整数です(どのプラットフォームでもそうではありません)。コンパイラは本当にその番号をアドレスとして使うつもりです。

関連する問題