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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值