芯片 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库的这些问题 |
CanTxMsgTypeDef TxMessage;
CanRxMsgTypeDef RxMessage;
/* CAN init function */
static void MX_CAN_Init(void)
{
hcan.Instance = CAN1;
hcan.pTxMsg = &TxMessage;
hcan.pRxMsg = &RxMessage;
hcan.Init.Prescaler = 12;
hcan.Init.Mode = CAN_MODE_NORMAL;
hcan.Init.SJW = CAN_SJW_1TQ;
hcan.Init.BS1 = CAN_BS1_3TQ;
hcan.Init.BS2 = CAN_BS2_2TQ;
hcan.Init.TTCM = DISABLE;
hcan.Init.ABOM = DISABLE;
hcan.Init.AWUM = ENABLE;
hcan.Init.NART = ENABLE;
hcan.Init.RFLM = DISABLE;
hcan.Init.TXFP = DISABLE;
if (HAL_CAN_Init(&hcan) != HAL_OK)
{
Error_Handler();
}
}
已经 解决了 就是指针 和变量的问题
评分
查看全部评分
这是怎么一回事
但是我不用hal 的教程很正常
HAL_CAN_ErrorCallback才是出错处理
评分
查看全部评分
hcan1.pTxMsg = &TxMessage;
hcan1.pRxMsg = &RxMessage;
评分
查看全部评分
还是没解决问题
感谢,按照你的提示,可以接收到数据 正常进入回调程序了,不过在回掉程序里面,操作can 的接收和发送,还是容易发生 hard_fault ,这个问题应该还是,指针使用得不当导致的问题,继续折腾中。