This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280021: can邮箱数量问题

Part Number: TMS320F280021
Other Parts Discussed in Thread: C2000WARE

can邮箱只能使用16个,多了运行会报错,想问一下哪个寄存器能打开全部的邮箱数,手册上写着有32个邮箱。

  • 想问一下哪个寄存器能打开全部的邮箱数

    你好,我刚刚查看了手册,似乎是没有这样的寄存器。能否提供报错截图?

  • //*****************************************************************************
    //
    // Error handling function to be called when an ASSERT is violated
    //
    //*****************************************************************************
    void __error__(char *filename, uint32_t line)
    {
        //
        // An ASSERT condition was evaluated as false. You can use the filename and
        // line parameters to determine what went wrong.
        //
        ESTOP0;
    }

    使用邮箱数量超过16个,程序就会跳转到此位置。

  • 请问您使用的是C2000ware的例程吗?您C2000Ware的版本是什么?

  • 你好!使用的不是例程。以下是我的程序。

    void init_eCAN_A ( u16 bitRatePrescaler, u16 timeSeg1, u16
                      timeSeg2, u16 sbg, u16 sjw, u16 sam)
    {
      u32 ui32RegValue;
      u16 ui16CANCTL;
      EALLOW;
      CpuSysRegs.PCLKCR10.bit.CAN_A = 1;
      GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;  /* Enable pull-up on GPIO13 */
      GpioCtrlRegs.GPAGMUX1.bit.GPIO13 = 3;
      GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 1;
      GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;  /* Enable pull-up on GPIO12 */
      GpioCtrlRegs.GPAGMUX1.bit.GPIO12 = 3;
      GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1;
      EDIS;
      ui32RegValue = (((u32)((bitRatePrescaler-1) & 0x03C0))<<10)|((timeSeg2-1)<<
        12)|((timeSeg1-1)<<8)|((sjw-1)<<6)|((bitRatePrescaler-1) & 0x3F);
    
    
    //   EALLOW;
    //  CanaRegs.CAN_CTL.bit.Init = 1;//CAN module ignores bus activity
    //  CanaRegs.CAN_CTL.bit.PMD = 5;//Parity function disabled
    //  CanaRegs.CAN_RAM_INIT.bit.CAN_RAM_INIT = 1;
    //  CanaRegs.CAN_RAM_INIT.bit.KEY3 = 1;
    //  CanaRegs.CAN_RAM_INIT.bit.KEY1 = 1;
    //  while(!((CanaRegs.CAN_RAM_INIT.all & 0x003FU) == 0x25)){
    //  }
    //  CanaRegs.CAN_CTL.bit.SWR = 1;
    //  SysCtl_delay(1U);
    //  CanaRegs.CAN_CTL.bit.CCE = 1;// Configuration Change Enable
    
    
      CAN_initModule(CANA_BASE);
    //  ClkCfgRegs.CLKSRCCTL2.bit.CANABCLKSEL = 0;//CANA Bit-Clock Source Select PERx.SYSCLK
      CAN_selectClockSource(CANA_BASE, (CAN_ClockSource)0);
    
      //Set init mode
    //  CanaRegs.CAN_CTL.bit.CCE = 1;// Configuration Change Enable
    //  CanaRegs.CAN_CTL.bit.Init = 1;//CAN module ignores bus activity
      ui16CANCTL = HWREGH(CANA_BASE + CAN_O_CTL);
      HWREGH(CANA_BASE + CAN_O_CTL) = ui16CANCTL | CAN_CTL_INIT | CAN_CTL_CCE;
    
      //Set Bit Timing register
    //   CanaRegs.CAN_BTR.bit.BRP = bitRatePrescaler-1;
    //  CanaRegs.CAN_BTR.bit.SJW = sjw-1;
    //  CanaRegs.CAN_BTR.bit.TSEG1 = timeSeg1-1;
    //  CanaRegs.CAN_BTR.bit.TSEG2 = timeSeg2-1;
    //  CanaRegs.CAN_BTR.bit.BRPE = 0;//Baud Rate Prescaler Extension
      HWREGH(CANA_BASE + CAN_O_BTR) = (ui32RegValue & 0xFFFFU);
      HWREGH(CANA_BASE + CAN_O_BTR + 2) = (ui32RegValue >> 16);
    
    
      // Restore the saved CAN Control register.
      //  CanaRegs.CAN_IP_MUX21 = 0;
      HWREGH(CANA_BASE + CAN_O_CTL) = ui16CANCTL;
      HWREGH(CANA_BASE + CAN_O_IP_MUX21) = 0;
      HWREGH(CANA_BASE + CAN_O_IP_MUX21 + 2) = 0;
    
    
    //  HWREGH(CANA_BASE + CAN_O_IF1CMD) |= 0x20;
    //  HWREGH(CANA_BASE + CAN_O_IF2CMD) |= 0x20;
    //  HWREGH(CANA_BASE + CAN_O_IP_MUX21) = 0x20;
    
      //CanaRegs.CAN_IF1ARB.bit.MsgVal = 1;
    
    //  CanaRegs.CAN_IF1CMD.bit.MSG_NUM = 0x20;
    //  CanaRegs.CAN_IP_MUX21 = 0xFFFFFFFF;
    
    //  HWREGH(CANA_BASE + CAN_O_TXRQ_X) = CAN_TXRQ_X_TXRQSTREG2_M|CAN_TXRQ_X_TXRQSTREG1_M;
    //  HWREGH(CANA_BASE + CAN_O_NDAT_X) = CAN_NDAT_X_NEWDATREG2_M|CAN_NDAT_X_NEWDATREG1_M;
    //  HWREGH(CANA_BASE + CAN_O_IPEN_X) = CAN_IPEN_X_INTPNDREG2_M|CAN_IPEN_X_INTPNDREG1_M;
    //  HWREGH(CANA_BASE + CAN_O_MVAL_X) = CAN_MVAL_X_MSGVALREG2_M|CAN_MVAL_X_MSGVALREG1_M;
    
    
    
      // Enable the CAN for operation.
        //  CanaRegs.CAN_CTL.bit.CCE = 0;// Configuration Change disEnable
      //  CanaRegs.CAN_CTL.bit.Init = 0;//CAN module processes messages normally
      CAN_enableController(CANA_BASE);
    
    //  EDIS;
    }
    
    void MCU_CAN_Transmit_Task_Init(void)
    {
      /* Start for S-Function (c280xcanxmt): '<S4>/CAN Transmit' incorporates:
       *  Constant: '<S4>/Constant1'
       */
      CAN_setupMessageObject(CANA_BASE, MCU_220_msg+1, Usercan_MCU220, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
    
      /* Start for S-Function (c280xcanxmt): '<S4>/CAN Transmit1' incorporates:
       *  Constant: '<S4>/Constant2'
       */
      CAN_setupMessageObject(CANA_BASE, MCU_221_msg+1, Usercan_MCU221, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
    
      /* Start for S-Function (c280xcanxmt): '<S4>/CAN Transmit2' incorporates:
       *  Constant: '<S4>/Constant3'
       */
      CAN_setupMessageObject(CANA_BASE, MCU_222_msg+1, Usercan_MCU222, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
      /* Start for S-Function (c280xcanxmt): '<S4>/CAN Transmit2' incorporates:
       *  Constant: '<S4>/Constant3'
       */
      CAN_setupMessageObject(CANA_BASE, MCU_223_msg+1, Usercan_MCU223, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
      /* Start for S-Function (c280xcanxmt): '<S4>/CAN Transmit2' incorporates:
       *  Constant: '<S4>/Constant3'
       */
      CAN_setupMessageObject(CANA_BASE, MCU_224_msg+1, Usercan_MCU224, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
      /* Start for S-Function (c280xcanxmt): '<S4>/CAN Transmit2' incorporates:
       *  Constant: '<S4>/Constant3'
       */
      CAN_setupMessageObject(CANA_BASE, MCU_519_msg+1, Usercan_MCU519, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
      /* Start for S-Function (c280xcanxmt): '<S4>/CAN Transmit2' incorporates:
       *  Constant: '<S4>/Constant3'
       */
      CAN_setupMessageObject(CANA_BASE, MCU_520_msg+1, Usercan_MCU520, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
      /* Start for S-Function (c280xcanxmt): '<S4>/CAN Transmit2' incorporates:
       *  Constant: '<S4>/Constant3'
       */
      CAN_setupMessageObject(CANA_BASE, MCU_521_msg+1, Usercan_MCU521, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
    
      CAN_setupMessageObject(CANA_BASE, MCU_112_msg+1, Usercan_MCU112, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
    
      CAN_setupMessageObject(CANA_BASE, MCU_111_msg+1, Usercan_MCU111, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
    
      CAN_setupMessageObject(CANA_BASE, MCU_729_msg+1, Usercan_PhyRes729, CAN_MSG_FRAME_STD,
        CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, 8);
    }
    
    void TransCanData(u16 transType)
    {
        unsigned char* ucTXMsgData;
        u16 u16temp = 0;
        switch (transType)
            {
                case 0: //
                    can_Tx.ID = 220U;
                    can_Tx.Length = 8U;
                    can_Tx.Data[0] = (u8)(mcu_Msg.MCU_220_MOT_INIT|(mcu_Msg.MCU_220_MOT_STA<<1)|(mcu_Msg.MCU_220_MOT_MODE<<3)|(mcu_Msg.MCU_220_MOT_DIR<<5)|(mcu_Msg.MCU_220_HV_CHECK_FLAG<<7));
                    can_Tx.Data[1] = (u8)(0|(0<<1)|(mcu_Msg.MCU_220_LV_OFF_REQ_FLAG<<2)|(acce_mode<<3)|(Err.ErrState<<4));
                    can_Tx.Data[2] = (u8)0x00;
                    u16temp=(u16)(gSpdRpm+10000.0F);//mcu_Msg.MCU_MotActuSpd速度
                    can_Tx.Data[4] = (u8)u16temp;
                    can_Tx.Data[3] = (u8)(u16temp>>8);
                    u16temp=(u16)((TroqueFbk_Y.TrqFbk+1500.0F)*2.0f);//mcu_Msg.MCU_MotActuToq转矩
    
                    can_Tx.Data[6] = (u8)u16temp;
                    can_Tx.Data[5] = (u8)(u16temp>>8);
                    can_Tx.Data[7] = (u8)(0|(0<<1)|(0<<2)|(0<<3)|(mcu_Msg.MCU_220_MCUready<<4)|(mcu_Msg.MCU_220_EvSpd_Validity<<5)|(mcu_Msg.MCU_220_Activedischarge_STA<<6)|(0<<7));
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_220_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 1: //
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 221U;
                    can_Tx.Length = 8U;
                   /* if (mcu_Msg.MCU_DirecEn == 0)      u16temp = 3; // 1 rev 2 Neu 3 Dri  4 Spo 5 Park
                    else if (mcu_Msg.MCU_DirecEn == 1) u16temp = 1;
                    else                               u16temp = 2;*/
                    can_Tx.Data[0] = (u8)0x00;
                    u16temp=(u16)((f32)gMeas.Udc); //母线电压
                    can_Tx.Data[2] = (u8)u16temp;
                    can_Tx.Data[1] = (u8)(u16temp>>8);
                    u16temp=(u16)((TseRefCtrl.fIdcFbk+1000.0f)*10.0f);//母线电流
                    can_Tx.Data[4] = (u8)u16temp;
                    can_Tx.Data[3] = (u8)(u16temp>>8);
                    u16temp=(u16)(((f32)gMeas.I_mag*100.0f)); //相电流
                    can_Tx.Data[6] = (u8)u16temp;
                    can_Tx.Data[5] = (u8)(u16temp>>8);
                    can_Tx.Data[7] = (u8)0x00;
                    //can_Tx.Data[6] = (u8)0x00;
                    //can_Tx.Data[7] = (u8)0x00;
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_221_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 2: //
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 222U;
                    can_Tx.Length = 8U;
                    can_Tx.Data[0] = (u8)0x00;
                    u16temp=(u16)((f32)(mcu_Msg.MCU_222_DRIVE_TOR_MAX+1500.0f) * 2.0f); //驱动电机最大驱动转矩
                    can_Tx.Data[2] = (u8)u16temp;
                    can_Tx.Data[1] = (u8)(u16temp>>8);
                    u16temp=(u16)((mcu_Msg.MCU_222_BRAKE_TOR_MAX+1500.0f)*2.0f);//驱动电机最大制动转矩
                    can_Tx.Data[4] = (u8)u16temp;
                    can_Tx.Data[3] = (u8)(u16temp>>8);
                    u16temp=(u16)((f32)(mcu_Msg.MCU_222_OutputPower+1000)*2.0f); //驱动电机输出功率
                    can_Tx.Data[6] = (u8)u16temp;
                    can_Tx.Data[5] = (u8)(u16temp>>8);
                    mcu_Msg.MCU_222_RollingCounter=((++mcu_Msg.MCU_222_RollingCounter)%16);
                    u16temp=(u16)(mcu_Msg.MCU_222_RollingCounter|(mcu_Msg.MCU_222_St_PowerReduceOperation<<4));
                    can_Tx.Data[7] = (u8)u16temp;
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_222_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 3: //
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 223U;
                    can_Tx.Length = 8U;
    
                    can_Tx.Data[0] = 0;
                    can_Tx.Data[1] = (u8)(mcu_Msg.MCU_223_IGBT_TEMP+40);
    
                    can_Tx.Data[2] = (u8)(mcu_Msg.MCU_223_MOT_TEMP+40);
                    //can_Tx.Data[2] = (u8)(APPCfg.pad1[127]+40);
    
                    can_Tx.Data[3] = 0;
    
                    can_Tx.Data[4] = 0;
                    can_Tx.Data[5] = 0;
    
                    can_Tx.Data[6] = 0;
                    mcu_Msg.MCU_223_RollingCounter=((++mcu_Msg.MCU_223_RollingCounter)%16);
                    //mcu_Msg.MCU_631_CheckSum = calCrc(can_Tx.Data,7);
                    u16temp=(u8)(mcu_Msg.MCU_223_RollingCounter<<4);
                    can_Tx.Data[7] = (u8)u16temp;
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_223_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 4: //
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 224U;
                    can_Tx.Length = 8U;
                    can_Tx.Data[0] = 0;
                    can_Tx.Data[1] = 0;
                    can_Tx.Data[2] = 0;
                    can_Tx.Data[3] = 0;
                    can_Tx.Data[4] = 0;
                    u16temp=(u16)((TseRefCtrl.fIdcFbk+1000)*10.0f); //直流母线电流实际测量值
                    can_Tx.Data[5] = (u8)(u16temp>>8);
                    can_Tx.Data[6] = (u8)u16temp;
                    can_Tx.Data[7] = 0;
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_224_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 5: //
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 519U;
                    can_Tx.Length = 8U;
                    can_Tx.Data[0] = (u8)(0|(0<<1)|(0<<2)|(0<<3)|(0<<4)|(Err.OverCurrent<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[1] = (u8)(0|(0<<1)|(0<<2)|(0<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[2] = (u8)(0|(0<<1)|(0<<2)|(0<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[3] = (u8)(0|(0<<1)|(0<<2)|(0<<3)|(0<<4)|(0<<5)|(Err.OverSpd<<6)|(0<<7));
                    can_Tx.Data[4] = (u8)(0|(0<<1)|(0<<2)|(Err.OverVoltage<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[5] = (u8)(0|(0<<1)|(Err.IGBTOverHeat<<2)|(0<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[6] = (u8)(0|(0<<1)|(Err.RDC_Err<<2)|(0<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[7] = (u8)(u16temp>>8);
                    if (Err.ErrState != 0 && EepromCtrl.FlashErr == 0)
                        EepromCtrl.FlashErr = 1;
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_519_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 6: //
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 520U;
                    can_Tx.Length = 8U;
                    can_Tx.Data[0] = (u8)(Err.FO|(0<<1)|(0<<2)|(0<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[1] = (u8)(0|(0<<1)|(0<<2)|(0<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[2] = (u8)(Err.OverVoltage|(Err.OverVoltageWarning<<1)|(0<<2)|(Err.LowVoltage<<3)|(Err.LowVoltageWarning<<4)|(Err.IGBTTempSensorError<<5)|(0<<6)|(Err.IGBTOverHeat<<7));
                    can_Tx.Data[3] = (u8)(0|(Err.MotorTempSensorError<<1)|(0<<2)|(Err.MotorOverHeat<<3)|(Err.RDC_Err<<4)|(0<<5)|(mcu_Msg.MCU_520_RF_F_OVERSPEED<<6)|(mcu_Msg.MCU_520_LIF_R_OVERSPEED<<7));
                    can_Tx.Data[4] = (u8)(0|(0<<1)|(0<<2)|(Err.MotorOverHeatWarning<<3)|(0<<4)|(Err.IGBTOverHeatWarning<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[5] = (u8)(0|(0<<1)|(Err.EepromFault<<2)|(Err.MotorStock<<3)|(Err.DisChargeFail<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[6] = (u8)(0|(0<<1)|(0<<2)|(mcu_Msg.MCU_520_LIF_F_OVERSPEED<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    can_Tx.Data[7] = (u8)(0|(0<<1)|(0<<2)|(0<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7));
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_520_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 7:
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 521U;
                    can_Tx.Length = 8U;
                    can_Tx.Data[0] = (u8)0;
                    can_Tx.Data[1] = (u8)0;
    
                    can_Tx.Data[2] = (u8)0;
                    can_Tx.Data[3] = (u8)0;
    
                    can_Tx.Data[4] = (u8)0;
                    can_Tx.Data[5] = (u8)(MCU_521_MCU_PLM_Num|(MCU_521_Motor_PLM_Num<<4));
    
                    can_Tx.Data[6] = (u8)(Year|(Month<<4));
    
                    can_Tx.Data[7] = (u8)Date;
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_521_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 8:
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 112U;
                    can_Tx.Length = 8U;
                    can_Tx.Data[0] = (u8)i++;
                    can_Tx.Data[1] = (u8)i++;
    
                    u16temp=(u16)(gResolver.DCoffsetCOS+10000);
                    can_Tx.Data[3] = (u8)u16temp;
                    can_Tx.Data[2] = (u8)(u16temp>>8);
                    u16temp=(u16)(gResolver.DCoffsetSIN+10000);
                    can_Tx.Data[5] = (u8)u16temp;
                    can_Tx.Data[4] = (u8)(u16temp>>8);
                    u16temp=(u16)(gResolver.DCoffsetEXC+10000);
                    can_Tx.Data[7] = (u8)u16temp;
                    can_Tx.Data[6] = (u8)(u16temp>>8);
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_112_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
                case 9:
                    /* S-Function (scan_Tx): '<S3>/CAN Pack2' */
                    can_Tx.ID = 111U;
                    can_Tx.Length = 8U;
                    can_Tx.Data[0] = (u8)1;
                    can_Tx.Data[1] = (u8)2;
                    can_Tx.Data[2] = (u8)3;
                    can_Tx.Data[3] = (u8)4;
                    can_Tx.Data[4] = (u8)5;
                    can_Tx.Data[5] = (u8)6;
                    can_Tx.Data[6] = (u8)7;
                    can_Tx.Data[7] = (u8)8;
                    ucTXMsgData = (unsigned char*)can_Tx.Data;
                    CAN_sendMessage(CANA_BASE, MCU_111_msg+1, can_Tx.Length, (u16*)ucTXMsgData);
                    break;
    
                default:
                    ;
                    break;
             }
    }

  • 我推测应该是您库的问题。

    extern void __error__(char *filename, uint32_t line);该函数曾经导致一些问题,extern void __error__(const char *filename, uint32_t line);这个是最新版本的函数,关于从char *更改为const char *的问题,此更改已经在C2000Ware v4.01.00中推出。已对 debug.h 和 device.h 文件中的所有 Gen3器件进行了更改。

  • 您需要重新安装C2000Ware并在您的工程中使用最新的库,以下是最新c2000ware的下载链接:

    www.ti.com.cn/.../C2000WARE

  • 我已经下好了C2000Ware 我应该怎么跟换最新的库

  • 你可以试试将C:\ti\c2000\C2000Ware_4_02_00_00\driverlib\f28002x\driverlib 路径下的debug.h替换掉您原来的。