2017-05-18 9 views
-4

質問は、32ビットであるcortex m3の埋め込みcプログラミングに関連しています。これは、ピン19-26が出力として設定されているはずのGPIOポート用です。コードはGPIO0->FIODIR = 0xF<<19です。32ビットマシンで0xF << 19の値は何ですか?これは埋め込まれたCに関連しています。また、 "<<"には左シフト以外のいくつかの機能がありますか?

上記のコードは、出力としてピン19-22だけを設定することになるため、私は混乱します。誰かが私の疑いを明確にしてくれますか?

+0

多分** 4 ** ...の代わりに** 8 **ビットを設定した '0xFF'を意味していたかもしれません(19-26は8ビットです)... –

+0

Cortex-M3はGPIO実装 - 製造元/デバイス固有ですが、デバイスを指定していません。それにもかかわらず、このケースでは、コンパイラ実装での誤った動作ではなく、そのコードのコードまたはドキュメンテーション(たとえばコメントなど)または要件の理解が間違いであることが確実です。 C++((not C)では '<<'はオーバーロードされますが、あなたの例にあわせて整数オペランドを持つ関数が組み込まれています。 – Clifford

答えて

0

もちろん、0xf << 19には4ビットしか設定されていません(値は0x780000です)。

あなたはコードがレジスタ内に既にいずれかのビットを続けるだろう

GPIO0->FIODIR |= 0xf << 19; 

をしませんか?

関連する問題

 関連する問題