本帖最后由 小寒咍 于 2021-4-22 09:10 编辑
#include "DSP2833x_Project.h"
#pragma CODE_SEC
tiON(InitFlash,"ramfuncs")
void mailbox_read(int16 i);
void InitEPwm1_4Example(void);//EPwm1-4的初始化
void InitEPwm5_6Example(void);//EPwm5-6的初始化
interrupt void ECAN0_ISR(void); //Ecan0的中断服务函数
void eCAN0_int(void);
void eCAN_Config(void);
long loopcount1 = 0;
long loopcount2 = 0;
long loopcount3 = 0;
Uint32 TestMbox1=12 ;
volatile unsigned TestMbox2 ;
volatile unsigned TestMbox3 ;
volatile unsigned TestMbox4 ;
volatile unsigned TestMbox5 ;
volatile unsigned TestMbox6 ;
Uint32 TEMP1 ;
Uint32 TEMP2 ;
Uint32 TEMP3 ;
Uint32 TEMP4 ;
Uint32 TEMP5 ;
Uint32 TEMP6 ;
Uint32 BYTE[6] ;
Uint32 _8_BYTE[12];
struct ECAN_REGS ECanbShadow;
float Value[8];
void main(void)
{
InitSysCtrl();
InitECanbGpio();
InitECanb();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
// InitFlash();
PassCount = 0;
EALLOW;
InitEPwm1Gpio();
InitEPwm2Gpio();
InitEPwm3Gpio();
InitEPwm4Gpio();
InitEPwm5Gpio();
InitEPwm6Gpio();
EDIS;
eCAN0_int();
eCAN_Config();
EALLOW;
PieVectTable.ECAN0INTB = &ECAN0_ISR;
EDIS;
PieCtrlRegs.PIEIER9.bit.INTx7 = 1;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
IER |= M_INT9;
EINT; //开全局中断
ERTM;
InitEPwm1_4Example();
InitEPwm5_6Example();
// Begin transmitting
for(;;)
{
/*
ECanbRegs.CANTRS.all = 0x00000001; // Set TRS for all transmit mailboxes
while(ECanbRegs.CANTA.all != 0x00000001 ) {} // Wait for all TAn bits to be set..
ECanbRegs.CANTA.all = 0x00000001; // Clear all TAn
MessageReceivedCount++;
//mailbox_read(16);
*/
loopcount1 ++;
}
/*
while(1)
{
while(ECanbRegs.CANRMP.all != 0x00010000 ) {}
ECanbRegs.CANRMP.all = 0x00010000;
//mailbox_read(16);
loopcount1 ++;
}
*/
}
void ECAN0_ISR(void)
{
if(ECanbRegs.CANRMP.all == 0x00010000 )
volatile struct MBOX *Mailbox;
Mailbox = &ECanbMboxes.MBOX0 + 16;
TestMbox1=1;
TestMbox1=Mailbox->MDL.all; // = 0x9555AAAn (n is the MBX number)
TestMbox2=ECanbMboxes.MBOX16.MDH.all; // = 0x89ABCDEF (a constant)
TestMbox3=ECanbMboxes.MBOX16.MSGID.all;// = 0x9555AAAn (n is the MBX number)
ECanbRegs.CANRMP.all = 0x00010000;
TEMP1=TestMbox1;
TEMP2=TestMbox2;
TEMP5=5;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
loopcount2 ++;
}