查看: 3403|回复: 1

[S12] 关于MC9S12XEP100中CAN接收中断的问题

[复制链接]

该用户从未签到

1

主题

2

帖子

0

新手上路

Rank: 1

积分
21
最后登录
2017-2-9
发表于 2017-1-24 11:23:32 | 显示全部楼层 |阅读模式
我初次使用9s12系列的mcu,在使用can模块收发数据时遇到问题
can模块的配置采用pe自动生成的代码,初始化函数如下:
void CAN0_Init(void)
{
  /* CAN0CTL0: INITRQ=1 */
  setReg8Bits(CAN0CTL0, 0x01U);         
  while(CAN0CTL1_INITAK == 0U) {       /* Wait for init acknowledge */
  }
  /* CAN0CTL1: CANE=1,CLKSRC=0,LOOPB=0,LISTEN=0,BORM=0,WUPM=0,SLPAK=0,INITAK=1 */
  setReg8(CAN0CTL1, 0x81U);            
  /* CAN0BTR1: SAMP=0,TSEG22=1,TSEG21=1,TSEG20=0,TSEG13=0,TSEG12=1,TSEG11=1,TSEG10=1 */
  setReg8(CAN0BTR1, 0x67U);            
  /* CAN0BTR0: SJW1=1,SJW0=1,BRP5=0,BRP4=0,BRP3=0,BRP2=1,BRP1=0,BRP0=0 */
  setReg8(CAN0BTR0, 0xC4U);            
  /* CAN0IDAC: ??=0,??=0,IDAM1=0,IDAM0=0,??=0,IDHIT2=0,IDHIT1=0,IDHIT0=0 */
  setReg8(CAN0IDAC, 0x00U);            
  /* CAN0IDAR0: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
  setReg8(CAN0IDAR0, 0x00U);            
  /* CAN0IDAR1: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
  setReg8(CAN0IDAR1, 0x00U);            
  /* CAN0IDAR2: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
  setReg8(CAN0IDAR2, 0x00U);            
  /* CAN0IDAR3: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
  setReg8(CAN0IDAR3, 0x00U);            
  /* CAN0IDAR4: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
  setReg8(CAN0IDAR4, 0x00U);            
  /* CAN0IDAR5: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
  setReg8(CAN0IDAR5, 0x00U);            
  /* CAN0IDAR6: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
  setReg8(CAN0IDAR6, 0x00U);            
  /* CAN0IDAR7: AC7=0,AC6=0,AC5=0,AC4=0,AC3=0,AC2=0,AC1=0,AC0=0 */
  setReg8(CAN0IDAR7, 0x00U);            
  /* CAN0IDMR0: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
  setReg8(CAN0IDMR0, 0xFFU);            
  /* CAN0IDMR1: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
  setReg8(CAN0IDMR1, 0xFFU);            
  /* CAN0IDMR2: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
  setReg8(CAN0IDMR2, 0xFFU);            
  /* CAN0IDMR3: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
  setReg8(CAN0IDMR3, 0xFFU);            
  /* CAN0IDMR4: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
  setReg8(CAN0IDMR4, 0xFFU);            
  /* CAN0IDMR5: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
  setReg8(CAN0IDMR5, 0xFFU);            
  /* CAN0IDMR6: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
  setReg8(CAN0IDMR6, 0xFFU);            
  /* CAN0IDMR7: AM7=1,AM6=1,AM5=1,AM4=1,AM3=1,AM2=1,AM1=1,AM0=1 */
  setReg8(CAN0IDMR7, 0xFFU);            
  /* CAN0CTL0: INITRQ=0 */
  clrReg8Bits(CAN0CTL0, 0x01U);         
  while(CAN0CTL1_INITAK) {             /* Wait for init exit */
  }
  /* CAN0CTL0: RXFRM=0,RXACT=0,CSWAI=0,SYNCH=0,TIME=0,WUPE=0,SLPRQ=0,INITRQ=0 */
  setReg8(CAN0CTL0, 0x00U);            
  /* CAN0RIER: WUPIE=0,CSCIE=1,RSTATE1=0,RSTATE0=0,TSTATE1=0,TSTATE0=0,OVRIE=0,RXFIE=1 */
  setReg8(CAN0RIER, 0x41U);            
  /* CAN0TIER: ??=0,??=0,??=0,??=0,??=0,TXEIE2=0,TXEIE1=0,TXEIE0=0 */
  setReg8(CAN0TIER, 0x00U);            
}
中断向量表也是由pe自动生成:
  &ISR_CAN0_Tx,                         /* 0x58  0xFFB0   1   no   ivVcan0tx       used by PE */
  &ISR_CAN0_Rx,                         /* 0x59  0xFFB2   1   no   ivVcan0rx       used by PE */
  &ISR_CAN0_Error,                      /* 0x5A  0xFFB4   1   no   ivVcan0err      used by PE */
  &ISR_CAN0_Wakeup,                     /* 0x5B  0xFFB6   1   no   ivVcan0wkup     used by PE */
中断子函数pe生成:
#pragma CODE_SEG __NEAR_SEG NON_BANKED
/*
** ===================================================================
**     Interrupt handler : ISR_CAN0_Rx
**
**     Description :
**         User interrupt service routine.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/
ISR(ISR_CAN0_Rx)
{
  /* Write your interrupt code here ... */
  CAN0_RxISR();
}
#pragma CODE_SEG DEFAULT

在调试接收模块时发现,接收中断已使能,can模块收到数据,也产生接收满标志:


但是程序未能进到接收中断。

请问是还有什么寄存器没有配置吗?

我知道答案 目前已有1人回答
回复

使用道具 举报

该用户从未签到

1

主题

2

帖子

0

新手上路

Rank: 1

积分
21
最后登录
2017-2-9
 楼主| 发表于 2017-2-4 17:07:32 | 显示全部楼层
顶贴,求助
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 08:02 , Processed in 0.094726 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表