请选择 进入手机版 | 继续访问电脑版

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

CAN 每次接收都是硬件错误

[复制链接]
yyth 提问时间:2018-12-24 11:31 /
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[FIFONumber].RIR));
  if (pRxMsg->IDE == CAN_ID_STD)
  {
   // pRxMsg->StdId = 0x000007FFU & (hcan->Instance->sFIFOMailBox[FIFONumber].RIR >> 21U);
                pRxMsg->StdId = 0x000007FFU & (pRxMsg->IDE >> 21U);
  }
  else
  {
   // pRxMsg->ExtId = 0x1FFFFFFFU & (hcan->Instance->sFIFOMailBox[FIFONumber].RIR >> 3U);
                pRxMsg->ExtId = 0x000007FFU & (pRxMsg->IDE >> 3U);
  }
收藏 评论4 发布时间:2018-12-24 11:31

举报

4个回答
废鱼 回答时间:2018-12-24 11:50:47
楼主,看一下pRxMsg是不是一个空指针?确定一下前面的操作是否给pRxMsg赋值了正确的指针。

点评

二楼说的情况很有可能,建议楼主确认一下,最好能多放一点代码,你就放这一段谁也不能确定是什么问题  发表于 2018-12-25 08:18

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

watershade 回答时间:2018-12-24 13:24:02
你先用loop模式试一下

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

xiaoyaoxiaoyao 回答时间:2020-2-1 22:22:44
楼主问题的解决方法就参考这里http://blog.csdn.net/xiaoyaofriend/article/details/104138618,其实二楼说的很对。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版