📄 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(); //初始化系统
DINT; //关中断
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl(); //初始化PIE中断
InitPieVectTable(); //初始化PIE中断矢量表
InitECan(); //初始化SCIA寄存器
MessageReceiveCount = 0;
ErrorCount = 0;
#if CAN_INT //设置中断服务程序入口地址
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++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -