HardFault_Handler问题

1、问题描述:mio板M2口连接雷达(即can口有数据时),程序跑到can中断使能代码时,程序跳转到“HardFault_Handler”,见下图:
代码跑到此处在这里插入图片描述
解决历程:
1、修改堆栈
先是网上搜索此问题,大致两个解决方法:
A、内存溢出或者访问越界
B、堆栈溢出
此代码在第一版mio上工作正常,排除A的可能性;怀疑不小心修改了配置,改变了堆栈大小。
于是,去修改堆栈的大小。可,无论怎么增加size,都还是一样的错误。
2、查看map文件
修改堆栈大小不起作用时,感觉好疑惑,怎么会这样?后与同事沟通,建议看看map文件,会不会can中断服务程序没有被编译?

在map文件里,找到定时器和串口中断服务函数,的的确确没有can中断服务函数。

3、can中断配置
这个时候,有点不理解,MY_NVIC_Init(1,0,USB_LP_CAN1_RX0_IRQn,2);对应配置了中断抢占优先级、响应优先级、中断编号和中断分组,并没有注册中断函数,那么中断函数是怎么关联的呢?
网上搜索:若要调用相关的中断功能,在NVIC中配置相关的中断优先级和中断号,
STM32内部会根据配置的中断号在启动文件中寻找相应的中断函数的相应的入口函数。
另外:ST公司在提供的启动文件startup_stm32fXXX.s

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值