STM32F476NG使用CAN2跑CAN_Loopback例程时无法接收

2019-07-14 14:17发布



最近要在STM32F476NG上启用CAN通信功能,板子上有两路CAN ;在使用CAN1的时候跑CAN_Loopback例程收发测试正常通过,但是CAN2在跑CAN_Loopback例程时,发送可以通过,无法接收;同样在跑CAN_Networking例程CAN2同样也是无法接收到数据,个人感觉是CAN2的设置有什么特别的要求,查看了数据手册也没有发现特别的地方,有没有跟我一样遇到相同问题的啊?大神求帮助啊!!!!!!!!!!!!!!!!!!!!!!

void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef *CanHandle)
{
  if ((CanHandle->pRxMsg->StdId == 0x321) && (CanHandle->pRxMsg->IDE == CAN_ID_STD) && (CanHandle->pRxMsg->DLC == 2))
  {
    LED_Display(CanHandle->pRxMsg->Data[0]);
    ubKeyNumber = CanHandle->pRxMsg->Data[0];
}
/* Receive */
  if (HAL_CAN_Receive_IT(CanHandle, CAN_FIFO0) != HAL_OK)
  {
    /* Reception Error */
    Error_Handler();
  }
}

可以进接收中断,可是只能进一次。。。。。。。
这个接收中断不需要清除标志位什么的吗》》?


使用CAN2时
1、__HAL_RCC_CAN1_CLK_ENABLE();
使能CAN1的时钟
2、将 sFilterConfig.FilterNumber = 14;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。