OpenEdv-开源电子网

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

STM32F429开发板HAL_CAN_Transmit发送数据进入HardFault_Handler问题

[复制链接]

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-5-15
在线时间
17 小时
发表于 2019-5-28 21:28:44 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 wpgdut 于 2019-5-28 21:38 编辑

原子哥,各位前辈,小弟现在使用STM32F429开发板,使用UCOS-II+HAL库,移植开发板中的例程,建立三个任务,主要有串口收发、LWIP网口收发、以及CAN收发三个功能。三个中断接收优先级依次为CAN接收中断、网口接收中断、串口接收中断。CAN接收中断优先级最高。

CAN通过HAL_CAN_Transmit发送数据(Timeout超时设置为10),每秒大概发送查询帧20帧,每发送一帧查询帧后,底层应答30帧数据,所以CAN中断接收大概每秒有600帧。
网口发送和中断应答接收的数据大概是每秒40帧(一问一答),现在遇到一个很纠结的问题。
程序在运行几个小时以后,进入HardFault_Handler错误循环。STOP停止后,通过KEIL调试,发现程序是在HAL_CAN_Transmit发送过程中的hcan->State = HAL_CAN_STATE_BUSY_TX处进入HardFault_Handler,详细如图所示。看起来就像就是CAN的发送和中断接收有冲突了一样。我猜想也有可能是网口中断的影响。
我通过监控,HAL_CAN_Transmit发送函数的返回值在1个小时候内,大概出现了400次HAL_TIMEOUT超时,即CAN发送失败的情况。另外还有个现象,就是监控CPU使用率OSCPUUsage,开始一段时间该值都比较低正常,运行一段时间后就会变的很大,大概有60-80的样子,最大值有90多。

我在这个问题上卡住好多天了,我自己也查了很多资料尝试了各种方法,依然未能凑效。今天也是第一次在论坛上发帖,麻烦原子哥和各位大神们帮忙看看,指点一下,小弟不胜感激!谢谢。







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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-5-29 02:09:49 | 显示全部楼层
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-5-15
在线时间
17 小时
 楼主| 发表于 2019-5-31 10:05:39 | 显示全部楼层
自己顶一下,有大神给点建议吗?或者找问题的思路。谢谢。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 21:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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