OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9549|回复: 4

求助!CAN接收报文时运行2小时左右就进入硬件错误中断

[复制链接]

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2013-1-17
在线时间
1 小时
发表于 2013-5-15 09:23:54 | 显示全部楼层 |阅读模式

各位好,
我在工作中遇到这样一个棘手的问题,STM32F105RB下,CAN接收报文时运行2小时左右就进入硬件错误中断,调试记录显示当时堆栈溢出,回推发生异常前PC将要执行的下一条指令,发现位于CAN_IntReceive_0位置,具体见附图,我个人认为是CAN接收中断优先级过低被1ms为单位的单位时间定时器中断频繁打断压栈造成的。我使用以下方法都未能解决问题:
1.报文过滤至最苛刻,基本上不会收到不属于本设备的报文;
2.去除中断嵌套,提升CAN中断接收优先级至最高;
3.延长时间基准定时器进入中断的单位时间由1ms至20ms;
4.修改.icf文件扩大cstack空间,压缩用量很小的heap空间。
现在不知道问题出在什么地方,希望大家提供建议,谢谢!急!
还有个问题:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
使用NVIC_PriorityGroup_0,对于NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority如何配置,按原理在NVIC_PriorityGroup_0下我认为这个NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority不应该被设置,只有NVIC_PriorityGroup_x,x非0,它才能够被设置,不知是否是这样?



 

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-15 10:14:53 | 显示全部楼层
回复【楼主位】alonso:
---------------------------------
这种问题确实比较难搞,只能慢慢测试了,呵呵。
是不是发送特殊数据的时候死机?
关于中断优先级,105和103应该差不多吧,组0的时候,没有抢占优先级,都是响应优先级,也就是不可优先级嵌套的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2013-1-17
在线时间
1 小时
 楼主| 发表于 2013-5-15 11:21:57 | 显示全部楼层
谢谢原子哥,我看了死机时的调试信息,可以确定是cstack溢出导致的,但就是解决不掉。
回复 支持 反对

使用道具 举报

11

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2013-1-17
在线时间
1 小时
 楼主| 发表于 2013-5-15 20:01:40 | 显示全部楼层
问题已经解决,原因是在应用层CAN的报文接收函数里建了一个自动变量CanRxMsg rxbuf[CAN_RING_QUEUE_SIZE];,CanRxMsg 结构占用16Bytes,宏定义CAN_RING_QUEUE_SIZE是256,这样一下就用掉4K的堆栈,而STM32RBT6总共才20KRAM,堆栈只分配了1K,根本无法给这个自动变量分配空间,当rxbuf未被释放,而收到的报文又较多时,存储超出堆栈空间并与静态变量发生碰撞,这时就产生硬件错误中断了。
只要将该变量定义为static类型,就可以解决这个问题了。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-15 20:36:56 | 显示全部楼层
回复【4楼】alonso:
---------------------------------
谢谢分享。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 18:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表