首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

9s12dg128 进入不了can接收中断,求高手

9s12dg128 进入不了can接收中断,求高手

我用的是codewarrior,代码如下
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
  uchar i;
    uchar a;
void Delay(unsigned int i)
{
while(i--);
}
void interrupt 51 CAN4_RX(void);
void CAN_init()
{
  
CAN0CTL0_INITRQ=1;
CAN4CTL0_INITRQ=1;
while((CAN0CTL1_INITAK==0)&&(CAN4CTL1_INITAK==0));
CAN0IDAC=0x20;
CAN4IDAC=0x20;
CAN0IDMR0=0xff;
CAN4IDMR0=0xff;
CAN0IDMR1=0xff;
CAN4IDMR1=0xff;
CAN0IDMR2=0xff;
CAN4IDMR2=0xff;
CAN0IDMR3=0xff;
CAN4IDMR3=0xff;
CAN0IDMR4=0xff;
CAN4IDMR4=0xff;
CAN0IDMR5=0xff;
CAN4IDMR5=0xff;
CAN0IDMR6=0xff;
CAN4IDMR6=0xff;
CAN0IDMR7=0xff;
CAN4IDMR7=0xff;
CAN0BTR0=0xc0;
CAN4BTR0=0xc0;
CAN0BTR1=0x6f;
CAN4BTR1=0x6f;
CAN0CTL1=0x80;
CAN4CTL1=0x80;
  MODRR=0x00;
CAN0CTL0_INITRQ=0;
CAN4CTL0_INITRQ=0;
  while((CAN0CTL1_INITAK==1)&&(CAN4CTL1_INITAK==1));
CAN4RIER=0x01;
}
void CAN4_TX()
{
  
  
  i=CAN4TFLG;
  CAN4TBSEL=i;
  i=CAN4TBSEL;
  CAN4TXIDR0=0xff;
  CAN4TXIDR1=0xe0;
  CAN4TXDSR0=0xff;
  CAN4TXDSR1=0xff;
  CAN4TXDSR2=0xff;
  CAN4TXDSR3=0xff;
  CAN4TXDSR4=0xff;
  CAN4TXDSR5=0xff;
  CAN4TXDSR6=0xff;
  CAN4TXDSR7=0xff;
  CAN4TXDLR=0x08;
  CAN4TFLG=i;
  while ((CAN0TFLG & i) != i);


   

  
}
void main (void)
{
  a=12;

EnableInterrupts;
  DDRB=0xff;
  CAN_init();
    CAN4_TX();
  
  for(;;);
}
#pragma CODE_SEG NON_BANKED
void interrupt 51 CAN4_RX(void)
{
CAN4CTL0_RXFRM=1;
PORTB=0xff;
/*PORTB=CAN4RXDSR0;
Delay(60000);
Delay(60000);
PORTB=CAN4RXDSR1;
Delay(60000);
Delay(60000);
PORTB=CAN4RXDSR2;
Delay(60000);
Delay(60000);
PORTB=CAN4RXDSR3;
Delay(60000);
Delay(60000);
PORTB=CAN4RXDSR4;
Delay(60000);
Delay(60000);
PORTB=CAN4RXDSR5;
Delay(60000);
Delay(60000);
PORTB=CAN4RXDSR6;
Delay(60000);
Delay(60000);
PORTB=CAN4RXDSR7;
Delay(60000);
Delay(60000); */
CAN4RFLG=0x01;
}
我用得bdm调试。运行后我用周立功可以接收到发的数,但周立功一发数,程序就停止运行了,而且我再按运行的话,它马上就停止,多按几次,才可以看到寄存器的值,可以看出RXFRM位置1了,RXF位也置1,但就是进不了中断,这是为什么呢
没有看明白
细节决定成败!
2# 电子工匠
是我没表达清楚吗,,版主帮我看看程序吧,很简单的程序,怎么就是进不了接收中断呢
2# 电子工匠
对了,我用的是can4,can0没用到
2# 电子工匠
在线等呀,急,先谢谢版主了,,问题就是我一给它发数程序就直接停止了,而不进入中断程序
返回列表