私はnrf52マイクロコントローラ(CORTEX 34F)プロセッサを使用しています。私はメインループとタイマー割り込みルーチンの両方で変更されているメインループの変数チェックを持っています。変数がtrueの場合は、割り込みルーチンで変数が変更されたときにvolatileキーワードが本当に必要です
メインループチェック:
実行条件コード偽
へセット変数
- タイマーごとに10の真のルーチンセット変数割り込みms
のでvolatile
キーワードを指定せずに、コードが働いて、私はvolatile
に変数を設定すると、動作しているようですが、私は確信していないではないようだ:私は皮質M4fは、データ・キャッシュを含んでいないと思う最初
- メモリ
- 秒:この場合は、コンパイラによってhandeldさ(アームKeil社)
どんな答えてください。
真実行した場合、本体のコード 2.リスト項目
はいそれは必要です – Fredrik
答えはこちらhttp://stackoverflow.com/questions/246127/why-is-volatile-needed-in-c – dkolmakov
@ dkolmakov:これは多かれ少なかれ重複していますが、 *キャッシュメモリ*のハードウェア機能と、レジスタ内の値をキャッシュする*ソフトウェア技術との間の誤解に対処していない可能性があります。 – Clifford