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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版