CAN 每次接收都是硬件错误
CAN 接收,每次都是到红色语句地方,在往下一步就会硬件错误,我看了寄存器,接收的数据是对的,有什么解决的方法没,是我的接收方式不对么?static HAL_StatusTypeDef CAN_Receive_IT(CAN_HandleTypeDef* hcan, uint8_t FIFONumber)
{
uint32_t tmp1 = 0U;
CanRxMsgTypeDef* pRxMsg = NULL;
/* Set RxMsg pointer */
if(FIFONumber == CAN_FIFO0)
{
pRxMsg = hcan->pRxMsg;
}
else /* FIFONumber == CAN_FIFO1 */
{
pRxMsg = hcan->pRx1Msg;
}
/* Get the Id */
pRxMsg->IDE = (uint8_t)0x04U & ((uint8_t)(hcan->Instance->sFIFOMailBox.RIR));
if (pRxMsg->IDE == CAN_ID_STD)
{
// pRxMsg->StdId = 0x000007FFU & (hcan->Instance->sFIFOMailBox.RIR >> 21U);
pRxMsg->StdId = 0x000007FFU & (pRxMsg->IDE >> 21U);
}
else
{
// pRxMsg->ExtId = 0x1FFFFFFFU & (hcan->Instance->sFIFOMailBox.RIR >> 3U);
pRxMsg->ExtId = 0x000007FFU & (pRxMsg->IDE >> 3U);
} 楼主,看一下pRxMsg是不是一个空指针?确定一下前面的操作是否给pRxMsg赋值了正确的指针。
你先用loop模式试一下 楼主问题的解决方法就参考这里http://blog.csdn.net/xiaoyaofriend/article/details/104138618,其实二楼说的很对。
页:
[1]