CPU进入错误回调函数后 ,无法接收新的数据包
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
经检查,如果CPU在进入错误回调函数之前,我们调用
HAL_CAN_Receive_IT(&Can1Handle, CAN_FIFO0);
一般来说,我们会认为CPU一直处于可以接收新的can包的状态,但是只要CPU进入错误回调函数之后,就无法接收新的数据包,进debug 单步运行后 得到问题的原因
void HAL_CAN_IRQHandler(CAN_HandleTypeDef* hcan)
{
...................................................
/* Call the Error call Back in case of Errors */
if(hcan->ErrorCode != HAL_CAN_ERROR_NONE)
{
/* Clear ERRI Flag */
hcan->Instance->MSR = CAN_MSR_ERRI;
/* Set the CAN state ready to be able to start again the process */
hcan->State = HAL_CAN_STATE_READY;
/* Disable interrupts: */
/* - Disable Error warning Interrupt */
/* - Disable Error passive Interrupt */
/* - Disable Bus-off Interrupt */
/* - Disable Last error code