S32K1XXデバッグ-プログラムはDefaultISRで実行されます

1.問題の説明

  • プログラムは元の要件に従って続行しませんでした。一時停止した後、DefaultISRにジャンプしたことがわかりました

2.問題分析

  • 情報を確認した後、この種の問題は通常、割り込みがトリガーされたが、割り込み関数が定義されていないため、ここにジャンプします

3.問題の発見

  • DefaultISR割り込み処理関数を定義します。この関数では、印刷割り込み制御ステータスレジスタを定義するか、直接デバッグして、アドレス0xE000ED04の値を確認します。
  • レジスタの値を表示するためのデバッグ。コンパイル環境に応じて決定する必要があり、ここでは説明しません
  • 関数定義の参照コードは次のとおりです。
uint8_t buf[100];
#define VECTORNUM    (*(volatile uint32_t*)(0xE000ED04)) 
void DefaultISR(void)
{
    
    
    /* 有printf可以用printf打印,结果一样 */
	sprintf(buf,"\n****default_isr entered on vector %d  %x *****\r\n\n", (uint8_t)VECTORNUM, (uint32_t)VECTORNUM);
	Sys_SendString(buf);  /* 串口数据发送 */
}

ここに画像の説明を挿入

  • 印刷されたデータに従って、VECTORが割り込みをトリガーした方法を判別します。ここで私の値は3です。対応するチップベクタテーブルを確認してください。これはHard_Faultが原因であることがわかります。
    ここに画像の説明を挿入

その他の

記述や説明に間違いがあることは避けられません。訂正してください。
侵害がある場合は、削除するために私に連絡してください、ありがとう!

添付の参照リンク(作成者に感謝):
[1] 。https://www.eefocus.com/constyu/blog/17-03/408750_297e4.html

おすすめ

転載: blog.csdn.net/ping_devil/article/details/108680117
おすすめ