ARMのソフトウエアトリガ割り込みについて

ARMのソフトウエア駆動割り込みの覚え書きです。

ARMの割り込みはNVIC(統合ネスト型ベクタ割り込みコントローラ)で管理されていますがその中でSTIRというレジスタがあります

f:id:gsmcustomeffects:20170404051828p:plain

図で言うと赤の部分ですね

詳細はこちらになります

f:id:gsmcustomeffects:20170404052003p:plain

Write to the STIR to generate an interrupt from software

とあるように割り込みの番号を入れてやるとソフトウエアから割り込みを生成できるようです。

実際の使い方はこのような感じです。

f:id:gsmcustomeffects:20170404052313p:plain

STIRレジスタIRQ番号を書くだけです

STM32の場合IRQ番号はstm32f767xx.hに定義されています

f:id:gsmcustomeffects:20170404052432p:plain

ためしにピン割り込みハンドラにソフトウエアから移動してみます

f:id:gsmcustomeffects:20170404052528p:plain

図ではわからないですがスイッチを押さなくても割り込みハンドラに遷移しています。
もちろん割り込みも有効なのでスイッチを押すとそのタイミングでも割り込みがかかります。
なのでこの割り込みを使う際は使わないであろうペリフェラルを殺しておいて使うほうがいいでしょう