?? can_test.c
字號:
///CAN BACK2BACK模式
#include "DSP28_Device.h"
void mailbox_check(int32 T1,int32 T2,int32 T3);
void mailbox_read(int16 i);
Uint32 ErrorCount;
Uint32 MessageReceiveCount;
Uint16 j;
Uint32 TestMbox1=0;
Uint32 TestMbox2=0;
Uint32 TestMbox3=0;
void main(void)
{
InitSysCtrl(); //初始化系統(tǒng)
DINT; //關(guān)中斷
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl(); //初始化PIE中斷
InitPieVectTable(); //初始化PIE中斷矢量表
InitECan(); //初始化SCIA寄存器
MessageReceiveCount = 0;
ErrorCount = 0;
#if CAN_INT //設(shè)置中斷服務(wù)程序入口地址
EALLOW;
PieVectTable.ECAN0INTA = &ECAN0INTA_ISR;
PieVectTable.ECAN1INTA = &ECAN1INTA_ISR;
EDIS;
IER |= M_INT9; //開中斷
#endif
EINT; // Enable INTM
ERTM; // Enable DBGM
for(;;)
{
ECanaRegs.CANTRS.all = 0x0000FFFF;
while(ECanaRegs.CANTA.all != 0x0000FFFF);
ECanaRegs.CANTA.all = 0x0000FFFF;
MessageReceiveCount++;
#if !CAN_INT
for(j = 0; j < 16; j++)
{
mailbox_read(j);
mailbox_check(TestMbox1,TestMbox2,TestMbox3);
}
#endif
}
}
void mailbox_read(int16 MBXnbr)
{
volatile struct MBOX *Mailbox;
Mailbox = &ECanaMboxes.MBOX0 + MBXnbr;
TestMbox1 = Mailbox->MDRL.all; // = 0x9555AAAn (n is the MBX number)
TestMbox2 = Mailbox->MDRH.all; // = 0x89ABCDEF (a constant)
TestMbox3 = Mailbox->MID.all; // = 0x9555AAAn (n is the MBX number)
} //運行到這里
void mailbox_check(int32 T1, int32 T2, int32 T3)
{
if((T1 != T3) || ( T2 != 0x89ABCDEF))
{
ErrorCount++;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -