9s12dg128 进入不了can接收中断,求高手
- UID
- 840037
|
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,但就是进不了中断,这是为什么呢 |
|
|
|
|
|
- UID
- 799481
|
|
|
|
|
|
- UID
- 840037
|
2# 电子工匠
是我没表达清楚吗,,版主帮我看看程序吧,很简单的程序,怎么就是进不了接收中断呢 |
|
|
|
|
|
- UID
- 840037
|
2# 电子工匠
对了,我用的是can4,can0没用到 |
|
|
|
|
|
- UID
- 840037
|
2# 电子工匠
在线等呀,急,先谢谢版主了,,问题就是我一给它发数程序就直接停止了,而不进入中断程序 |
|
|
|
|
|