MSP430技术论坛
直播中

小寒咍

4年用户 6经验值
擅长:连接器 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注

邮箱里的值赋给全局变量

本帖最后由 小寒咍 于 2021-4-22 09:10 编辑


#include "DSP2833x_Project.h"


#pragma CODE_SECtiON(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 ++;

    }

回帖(1)

阿信509

2021-4-22 17:27:38
有什么问题吗
举报

更多回帖

发帖
×
20
完善资料,
赚取积分