CAN通信发送超时后程序会死

2019-07-14 14:31发布

小弟最近在用CAN通信,在开发过程中发现了用HAL_CAN_Transmit发送数据时,如果把CAN的通信线断开时,程序会死在HAL_CAN_Transmit函数中的if(timeout != HAL_MAX_DELAY)的判断中。我使用的是freertos,我也百度了一下,说是里面的_HAL_UNLOCK(hcan)的问题,看的有点一头雾水。或许也是我的CAN配置的问题吧,有哪位大侠知道麻烦告诉下小弟,感激不尽、、、

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
zongyueli
1楼-- · 2019-07-15 14:07
楼主你好,你的问题描述中,把CAN的通信线断开是什么意思,还有最后您是怎么解决问题的?
hu_wfllllllllfl
2楼-- · 2019-07-15 17:55
zongyueli 发表于 2019-1-17 08:08
楼主你好,你的问题描述中,把CAN的通信线断开是什么意思,还有最后您是怎么解决问题的?

把通信线断开是我在CAN数据传输过程中一旦断开数据线,设备就死机了。然后最终解决的方法是在hal_gettick函数中用了frertos的函数来替代本来的Hal库里的自带的函数。
zongyueli
3楼-- · 2019-07-15 22:58
hu_wfllllllllfl 发表于 2019-1-17 08:27
把通信线断开是我在CAN数据传输过程中一旦断开数据线,设备就死机了。然后最终解决的方法是在hal_gettick函数中用了frertos的函数来替代本来的Hal库里的自带的函数。

谢谢!
Xiaoyu_Zh
4楼-- · 2019-07-16 03:43
楼主,我在hal.c里把hal_gettick函数的返回值换成xTaskGetTickCount();但是添加task.h这个头文件不成功?要怎么添加好

一周热门 更多>