2817|1

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

M0_CAN中断的问题 [复制链接]

void CAN_IRQHandler(void)
{
  uint32_t canstat = canstat;
  uint32_t can_int, msg_no;
   while ( (can_int = LPC_CAN->INT) != 0 )
  {
 if ( can_int & CAN_STATUS_INTERRUPT )
 {
   canstat = LPC_CAN->STAT;
#if CAN_DEBUG
   CANStatusLog[CANStatusLogCount++] = canstat;
#endif
   if ( canstat & STAT_EWARN )
   {
  EWarnCnt++;
  return;
   }
   if ( canstat & STAT_BOFF )
   {
  BOffCnt++;
  return;
   }
 }
 else
 {
      if ( (canstat & STAT_LEC) == 0 )  /* NO ERROR */
   {
  /* deal with RX only for now. */
  msg_no = can_int & 0x7FFF;
  if ( (msg_no >= 0x01) && (msg_no <= 0x20) )
  {
    LPC_CAN->STAT &= ~STAT_RXOK;
    CAN_MessageProcess( msg_no-1 );
    CANRxDone[msg_no-1] = TRUE;
  }
   }
 }
  }
  return;
}
#endif

问一下CAN收到数据进入这个中断时LPC_CAN->INT为状态中断,LPC_CAN->STAT为RXOK。那这个程序不是一接收到CAN数据就就马上产生状态中断么,怎么会进入ELSE里的报文中断里去呢?

此帖出自NXP MCU论坛

最新回复

刚学CAN  看了桂电实验室的书 和楼主相同问题 不知楼主是否解决?  详情 回复 发表于 2012-3-21 20:15
点赞 关注
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
刚学CAN  看了桂电实验室的书 和楼主相同问题 不知楼主是否解决?
此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表