|
现象:
STM32H743 FDCAN驱动正常工作后(在仿真态下面,CAN接收正常),点击MDK 退出仿真按钮,板子CAN接收终止。
后使用重新初始化CAN模块,可以继续接收数据。继续查找原因,发现CAN控制器,IR寄存器出现Message Lost标志,
该标志应该是由于MDK退出仿真态时导致的,于是在初始化部分,增加开启FDCAN_IT_RX_FIFO1_MESSAGE_LOST中断,
并在中断处理函数的接收部分,读取接收缓冲区的CAN数据,即可继续正常工作。
- HAL_FDCAN_ActivateNotification(&hfdcan2, FDCAN_IT_RX_FIFO1_MESSAGE_LOST, 0) != HAL_OK
复制代码- if (FDCAN_IT_RX_FIFO1_WATERMARK == RxFifo1ITs ||
- FDCAN_IT_RX_FIFO1_NEW_MESSAGE == RxFifo1ITs ||
- FDCAN_IT_RX_FIFO1_FULL == RxFifo1ITs ||
- FDCAN_IT_RX_FIFO1_MESSAGE_LOST == RxFifo1ITs)
- {
- //do
- HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO1, &hfdcan2_RX, rxdata);
- }
复制代码
|
|