コメントで述べたように: 一般に、ISR は再入可能性を防ぐための措置を講じる必要があります。PIC のようなものでは、これは ISR の「上部」で割り込みを無効にし、「下部」で割り込みを有効にするのと同じくらい簡単です。M3 の NVIC はもう少し複雑です。このホワイト ペーパー (http://www.arm.com/files/pdf/IntroToCortex-M3.pdf) の p.7 には、次のように記載されています。
NVIC は、割り込みのネスティング (スタッキング) をサポートしているため、より高い優先度を適用することで割り込みを早期に処理できます。また、割り込みの動的な再優先順位付けもサポートしています。優先度レベルは、実行時にソフトウェアによって変更できます。サービス中の割り込みは、割り込みサービス ルーチンが完了するまでそれ以上のアクティブ化がブロックされるため、偶発的な再エントリのリスクなしに優先度を変更できます。
上記の説明は、同じ割り込みの再入可能性の可能性に直接対処し、ISR に割り込む優先度の高い割り込みを処理するための優先順位付けの概念も紹介します。
http://infocenter.arm.com/help/topic/com.arm.doc.dui0552a/DUI0552A_cortex_m3_dgug.pdfという参考文献はかなり良いものです。p。4-9、割り込みを有効/無効にする手順が見つかります。ページ 4-6 に、割り込みクリア ペンディング レジスタの説明があります。これらを使用して、保留中の割り込みを特定できます。割り込みの有効化/無効化の制御に本当に慣れたい場合は、BASEPRI および BASEPRO_MAX レジスタを調べてください。
そうは言っても、あなたの質問がCortex-M3に関連しているというあなたの声明に同意するかどうかはわかりません. Keil (私のフレーバーの Cortex-M3) は、EXTI (外部割り込みコントローラー) が GPIO ピンの割り込みを処理すると述べています。興味深いことに、ARM のドキュメントでは「EXTI」について簡単に説明していますが、Keil STM32 のドキュメントのように「コントローラ」とは呼んでいません。「STM32 EXTI」で簡単にグーグル検索すると、多くのヒットが得られますが、「Luminary EXTI」で同様の検索を行ってもあまりヒットしません。それを考えると、この特定のコントローラーは、ARMがサードパーティに任せている周辺機器の1つであると推測しています。
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/REFERENCE_MANUAL/CD00171190.pdf . _ ここで言及されているいくつかの AFIO_EXTI レジスタがあります。これらにより、GPIO ラインを割り込みにマッピングできます。残念ながら、Luminary のドキュメントで同様のものを見つけることができません。
それで...これはどういう意味ですか?割り込みにはポートレベルの粒度しかないようです。したがって、ISR はどのピンが遷移したかを判断する必要があります (エッジを探していると仮定します)。幸運を!