📄 main.c
字号:
#include "DSP28_Device.h"
void mailbox_check1(int32 m,int32 n);
void mailbox_check2(int32 a,int32 b,int32 c,int32 d);
void mailbox_read(int16 i);
//定义全局变量
Uint32 ErrorCount;
Uint32 MessageReceiveCount;
extern Uint32 Tbox_MID;
extern Uint32 Tbox_MDL;
extern Uint32 Tbox_MDH;
extern Uint32 Rbox_MID;
extern Uint32 Rbox_MDL;
extern Uint32 Rbox_MDH;
void main(void)
{
MessageReceiveCount = 0;
ErrorCount = 0;
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE中断*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化SCAN寄存器*/
InitECan();
#if CAN_INT
/*设置中断服务程序入口地址*/
EALLOW;
PieVectTable.ECAN0INTA = &ECAN0INTA_ISR;
PieVectTable.ECAN1INTA = &ECAN1INTA_ISR;
EDIS;
/*开中断*/
IER |= M_INT9;
#endif
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
for(;;)
{
ECanaRegs.CANTRS.all = 0x0000FFFF;
while(ECanaRegs.CANTA.all != 0x0000FFFF)
{;}
ECanaRegs.CANTA.all = 0x0000FFFF;//清除CANTA寄存器
MessageReceiveCount++;
}
}
void mailbox_read(int16 MBXnbr)
{
volatile struct MBOX *Mailbox_transmit;
volatile struct MBOX *Mailbox_recieve;
Mailbox_transmit = &ECanaMboxes.MBOX0 + MBXnbr;
Mailbox_recieve = &ECanaMboxes.MBOX0 + MBXnbr + 16;
Tbox_MID = Mailbox_transmit->MID.all; //发送邮箱的标识符
Tbox_MDL = Mailbox_transmit->MDRL.all; //发送信息数据的低四字节
Tbox_MDH = Mailbox_transmit->MDRH.all; //发送信息数据的高四字节
Rbox_MID = Mailbox_recieve->MID.all; //接收邮箱的标识符
Rbox_MDL = Mailbox_recieve->MDRL.all; //接收信息数据的低四字节
Rbox_MDH = Mailbox_recieve->MDRH.all; //接收信息数据的高四字节
}
void mailbox_check1(int32 IDT, int32 IDR)
{
if(IDR != IDT)
ErrorCount++;
}
void mailbox_check2(int32 TMDL,int32 TMDH,int32 RMDL,int32 RMDH)
{
if((RMDL != TMDL) || (RMDH != TMDH))
ErrorCount++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -