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