适用STMCubeX Hal库驱动CAN接收hardHardFault

2019-07-14 15:53发布

芯片 STM32F103C8T6
同样的板子,用标准函数库,CAN收发都正常。
用hal 库 就会出现收到消息之后可以进中断,表示过滤器工作正常,但是接着程序就会跑到

void HardFault_Handler(void) {
        /* USER CODE BEGIN HardFault_IRQn 0 */
        asm("BX LR");//return to the errror
        /* USER CODE END HardFault_IRQn 0 */
        while (1) {
        }
        /* USER CODE BEGIN HardFault_IRQn 1 */

        /* USER CODE END HardFault_IRQn 1 */
}
我添加了,asm("BX LR");//return to the errror 跳转回出错点的语句,发现收到消息之后对can 的很多操作都会跳回到HardFault_Handler 。

Hal 库版本
STM32Cube FW_F1 V1.4.0

不知道有谁遇到过HAL库的这些问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
caseylee
1楼-- · 2019-07-15 02:08
太伤心了,又重新安装STM32Cube 提供的官方例子干了一边,还是会有hard fault
这是怎么一回事
但是我不用hal 的教程很正常
UserMen
2楼-- · 2019-07-15 07:15
HardFault_Handler本身应该不是出错处理
HAL_CAN_ErrorCallback才是出错处理
mosen137
3楼-- · 2019-07-15 10:38
:)  还没有研究过
mosen137
4楼-- · 2019-07-15 11:25
 精彩回答 2  元偷偷看……
TOPCB
5楼-- · 2019-07-15 13:20
楼主看一下CAN结构体里面的接收和发送,这个是指针型的,需要初始化CAN时进行赋值。
hcan1.pTxMsg = &TxMessage;
  hcan1.pRxMsg = &RxMessage;
caseylee
6楼-- · 2019-07-15 13:42
TOPCB 发表于 2018-11-20 13:10
楼主看一下CAN结构体里面的接收和发送,这个是指针型的,需要初始化CAN时进行赋值。
hcan1.pTxMsg = &TxMessage;
  hcan1.pRxMsg = &RxMessage;

还是没解决问题

一周热门 更多>