Previous: 7.4.2.3. タンパー割込みの有効化 |
Up: 7.4.2. タンパー検出機能の使用方法 |
Next: 8. リアルタイムクロック |
割込を使用していますから、割込ルーチンを作成しておく必要があります。割込ルーチンの関数名はTAMPER_IRQHandler関数です(bkp_tamper/stm32f10x_it.c)。
void TAMPER_IRQHandler(void) { ? if(BKP_GetITStatus() != RESET) ? { /* Tamper detection event occured */
??? cprintf(“Tamper interrupt occured!\r\n”); ??? cprintf(“Memorized message is :\r\n”); ??? Print_Backup_Register(); ??? cprintf(“\r\nIf you find no secret message above, it means Backup register is all reset.\r\n”);
??? /* Clear Tamper pin interrupt pending bit */ ??? BKP_ClearITPendingBit();
??? /* Clear Tamper pin Event(TE) pending flag */ ??? BKP_ClearFlag(); ? } } |
まず念のため割込みがタンパーイベントに呼び出されたものであるのかをBKP_GetITStatus関数(ライブラリ 13?9)で確認しています。正確に言えば、TAMPER_IRQHandler関数がタンパーイベント以外の理由で呼び出されることはありませんので不要です。
ライブラリ 13?9 BKP_GetITStatus関数
関数プロトタイプ |
ITStatus BKP_GetITStatus ( void ) |
動作 |
タンパー割込のペンディングビットをクリアします。 |
引数 |
無し |
戻り値 |
無し |
この割り込み処理ではタンパー割込が発生したことをターミナルに出力しています。タンパー割込みが発生した時点でバックアップ回路が自動的にバックアップレジスタの内容を消去していますから、ソフトウェアでバックアップレジスタの中身を消去する必要はありません。
割り込み処理が終わった後は、BKP_ClearITPendingBit関数(ライブラリ 13?10)で割込ペンディングビットをクリアします。
ライブラリ 13?10 BKP_ClearITPendingBit関数
関数プロトタイプ |
void BKP_ClearITPendingBit(void ) |
動作 |
タンパー割込のペンディングビットをクリアします。 |
引数 |
無し |
戻り値 |
無し |
割込ルーチンの最後にBKP_ClearFlag関数を実行して、バックアップレジスタへの書き込みが行えるようにしておきます。
Previous: 7.4.2.3. タンパー割込みの有効化 |
Up: 7.4.2. タンパー検出機能の使用方法 |
Next: 8. リアルタイムクロック |