FIFO从空状态开始,在接收到第一个有效的报文后,FIFO状态变为pending_1,硬件相应地把CAN_RFR寄存器的FMP[1:0]设置为’01’(二进制01b)。软件可以读取FIFO输出邮箱来读出邮箱中的报文,然后通过对CAN_RFR寄存器的RFOM位设置’1’来释放邮箱,这样FIFO又变为空状态了。如果在释放邮箱的同时,又收到了一个有效的报文...
图 中的 CAN 外设框图,在标号处的是 CAN 外设的接收 FIFO,它一共有 2 个接收 FIFO,每个 FIFO 中有 3 个邮箱,即最多可以缓存 6 个接收到的报文。当接收到报文时,FIFO 的报文计数器会自增,而 STM32 内部读取 FIFO 数据之后,报文计数器会自减,我们通过状态寄存器可获知报文计数器的值,而通过前面主控制寄...
if(HAL_CAN_ActivateNotification(phcan, CAN_IT_RX_FIFO0_MSG_PENDING ) != HAL_OK) { Error_Handler(); } } else { if(HAL_CAN_ActivateNotification(phcan, CAN_IT_RX_FIFO1_MSG_PENDING ) != HAL_OK) { Error_Handler(); } } /*启动CAN通讯*/ if(HAL_CAN_Start(phcan) != HAL_OK) {...
原代码中仅仅使能了CAN Error中断,并没有使能CAN接收中断,因此加入“CAN_IT_RX_FIFO0_MSG_PENDING”更新代码如下: /* Activate CAN Error notifications. */ const uint32_t activeITs = CAN_IT_ERROR_WARNING|CAN_IT_ERROR_PASSIVE| CAN_IT_LAST_ERROR_CODE| CAN_IT_ERROR |CAN_IT_RX_FIFO0_MSG_PENDING...
hcan1.Init.TransmitFifoPriority = DISABLE;if (HAL_CAN_Init( hcan1) != HAL_OK){ Error_...
原代码中仅仅使能了CAN Error中断,并没有使能CAN接收中断,因此加入“CAN_IT_RX_FIFO0_MSG_PENDING”更新代码如下: /* Activate CAN Error notifications. */ { const uint32_t activeITs = CAN_IT_ERROR_WARNING|CAN_IT_ERROR_PASSIVE| CAN_IT_LAST_ERROR_CODE| CAN_IT_ERROR |CAN_IT_RX_FIFO0_MSG_PEN...
FunctionalState TransmitFifoPriority; /* 配置 TXFP 报文优先级的判定方法 */ } CAN_InitTypeDef; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 发送及接收头结构体:主要用于构造发送报文,以及接收报文。收发发文时,需要自定义头结构体变量 ...
hCAN1_Filter.SlaveStartFilterBank = 0; HAL_CAN_ConfigFilter(&hCAN, &hCAN1_Filter); while(HAL_CAN_Start(&hCAN) != HAL_OK ) { printf("\nCAN_Start Failed!!"); HAL_Delay(100); } HAL_CAN_ActivateNotification(&hCAN, CAN_IT_RX_FIFO0_MSG_PENDING); ...
HAL_CAN_ActivateNotification(canHandle, CAN_IT_RX_FIFO0_MSG_PENDING);// 再次使能FIFO0接收中断} } } CAN_TxPacketTypeDef g_CanTxPacket;voidCAN_SetTxPacket(void){ g_CanTxPacket.hdr.StdId =0x321;// 标准ID// g_CanTxPacket.hdr.ExtId = 0x10F01234; // 扩展IDg_CanTxPacket.hdr.IDE = ...
收到消息,该FIFO的接收1/2也会被挂起,直到三个邮箱全部用完,如果开启了CAN RX接收中断,那么当FIFO接收0/1/2/被挂起时会进入对应的中断服务回调函数中,当使用HAL_CAN_GetRxMessage()函数读取掉接收FIFO0/1的某级深度的消息时,该级别邮箱将会被释放,方便接收下一条消息,如下图所示为接收FIFO状态流程图(注释1...