3

xSemaphoreGiveFromISRFreeRTOS の関数と付随するportEND_SWITCHING_ISRマクロを使用して、I2C トランザクションの終了を処理する割り込み内からセマフォを提供しようとしています。

そのたびに、プログラムのアプリケーション スタック オーバーフロー フック関数に行き着きます。動作中のバージョンからの唯一の変更点は、この行を ISR に追加したことです。スタックのサイズを 2 倍にしましたが、8192役に立ち16384ませんでした。

落とし穴が私に何をもたらしているかについて考えている人はいますか?

私のconfigCHECK_FOR_STACK_OVERFLOW価値は1です。

4

1 に答える 1

1

割り込みが RTOS configKERNEL_INTERRUPT_PRIORITY と同じ優先度レベルで実行されていることを確認したい場合があります。

残念ながら明確にはされていません。

少なくとも Microchip デバイスの場合、RTOS のデフォルト設定で割り込み優先度がチップのデフォルトよりも低く設定されているのと同じ問題に遭遇しました。

また、各タスクが優先度を処理するのに十分なメモリが必要です。また、taskYield がある場合は、割り込みの最後の命令でなければなりません。

于 2014-01-03T10:16:56.550 に答える