ビット演算とvolatileキーワード

ビットマップされたメモリ操作は、LEDが機能MMAPにファイル記述子、対応するプログラミングが理解することができます

式は、
ビットレジスタの#defineバンドエイリアス= 0x42000000 +(アドレス-0x40000000レジスタ)8。 4+ピン番号4
の実施形態:
の#define Peout(X)
のuint32_t )(0x42000000 +((のuint32_t)&GPIOE-> ODR-0x40000000から) 8 4+(X) 4)
GPIOE->取得ODRポート端子のレベル

volatileキーワードは、実行するために、コードの失敗につながる、過大表示された変数が参照最適化していないコンパイラは、コンパイラの最適化を防ぐことにあるようにすることです

アプリケーション:
1)マルチスレッドプログラミングは、グローバル変数を共有し、グローバル変数は、揮発性の電子を追加するように変更、コンパイラは変数を最適化することはできません。
2)ベアメタルプログラミング、共有グローバル変数の時間と割り込みサービス機能の機能は、グローバル変数は変数を最適化するようにコンパイラを聞かせていない、揮発性電子を追加するように変更しました。
3)ARMレジスタを定義し、レジスタは揮発性電子を追加するように変更されたアドレスへのポインタで、変数を最適化するコンパイラをさせてください。

おすすめ

転載: www.cnblogs.com/lp06/p/11847488.html