割り込みが無効になっているときに、割り込みのコードが最後まで実行されていないと思われます。次のコードでは、variableAとvariableBの順番はいつ変わるのでしょうか? 少なくとも、いくつかのプリント(ルーチンが割り込みの途中で実行している場合)が異なる場合があります。しかし、割り込みが無効になった後に物事が終わると、両方の変数は常に同じ値になります。割り込みAを割り込みBから無効にすると、Aが終了するのを待たずに実行が停止しますか?
myInterruptは固定サンプル時間に呼び出され、someRoutineは別のサンプルレートで呼び出されます。外部条件は、プログラムのある時点で設定されます。
"someRoutine"が優先度の高い割り込みの場合はどうなりますか?
'printf'を呼び出す準備中に割り込み関数が発生した場合、ある変数のコピーがスタックにプッシュされた後、他の変数のコピーがプッシュされる前に、' printf'は異なる値を出力します。 –
'printf'は割り込みの途中で決して実行されず、呼び出し元はサービス中に割り込みを無効にできないため、割り込みハンドラの実行が完了するのを止めることができません。 –
あなたの編集を覚えていれば、割り込みから 'printf'を呼び出すのは愚かでしょう、* escpecially *優先度の高いものです。より高いプライオリティの実行中に優先度の低い割り込みをディセーブルする点は何でしょうか? –