你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f105,hal库,can中断接收失败

[复制链接]
erpengcui 提问时间:2016-4-22 15:05 /
悬赏3ST金币未解决
大神们好,我先说下我的环境,keil 5, cubemx,其中在使用can中断接收HAL_CAN_Receive_IT时发现,如果单纯接收的话,是没有问题的,
但是如果接收和发送同时开启的时候,就经常会调用HAL_CAN_Receive_IT函数失败,后面就没法再接收了,不知道是什么问题,会不会是hal库的bug?

我看例程里是在回调中调用下一次中断接收的,也就这样做了,回调函数如下:
void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan)
{
  if(hcan->Instance == CAN2)
  {
    g_bcan_rx_flag = 1;
    osSemaphoreRelease(BcanBinarySemHandle);  
  
    if(HAL_OK != HAL_CAN_Receive_IT(&hcan2, CAN_FIFO0))
    {
       printf("bx IT error\n");   
    }
   
   return ;
  }
  
  if(hcan->Instance == CAN1)
  {
    osSemaphoreRelease(PcanBinarySemHandle);
    g_pcan_rx_flag = 1;
     if(HAL_OK != HAL_CAN_Receive_IT(&hcan1, CAN_FIFO0))
    //__HAL_CAN_ENABLE_IT(hcan, CAN_IT_FMP0);
    {
      printf("px IT error\n");
    }
  }
}

收藏 1 评论6 发布时间:2016-4-22 15:05

举报

6个回答
erpengcui 回答时间:2016-4-22 15:07:24
就是
if(HAL_OK != HAL_CAN_Receive_IT(&hcan2, CAN_FIFO0))
{
                printf("bx IT error\n");                       
}   这个经常出错,导致没办法继续接收can包
silence5888 回答时间:2016-6-28 11:44:04
楼主解决了吗 遇到哦啊同样问题哦
回答时间:2016-6-28 14:26:47
回调里面不要关闭中断就行了。我用的时候也是这样。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 赞一个!

查看全部评分

skyhestar 回答时间:2016-12-24 15:14:55
您好!我在回调里面没做任何操作,也会出现单纯接收的话,是没有问题的,
但是如果接收和发送同时开启的时候,就经常会调用HAL_CAN_Receive_IT函数失败,后面就没法再接收了,不知道是什么问题,求解答!!!
skyhestar 回答时间:2016-12-24 19:04:50
自己顶,怎么解决这个问题
llloookkk12 回答时间:2017-11-2 20:55:37
void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan)
{

        if(hcan->pRxMsg->IDE == CAN_ID_STD)
        {
            u32CanId = hcan->pRxMsg->StdId;
        }
        else
        {
            u32CanId = hcan->pRxMsg->ExtId;
        }
osSemaphoreRelease(PcanBinarySemHandle);
    g_pcan_rx_flag = 1;
        //============================================


     if (HAL_CAN_Receive_IT(&hcan1, CAN_FIFO0) != HAL_OK)
  {
    /* Reception Error */     
    __HAL_CAN_ENABLE_IT(&hcan1, CAN_IT_FMP0);// set interrupt flag for RX FIFO0 if CAN locked

  }
}

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版