MPLAB X IDE 编译注意事项

  在使用MPLAB X IDE编译时,可能会对全局定义的数组,结构体的初始值省略。

      如在XXX.c文件中

     byte ADCChannelNumArray[7] = {0,1,9,5,6,7,8};

    void ADC_Init(void)

{

   .....

   .....

CANDebugData.id = 0x68;
CANDebugData.RTR = 0;
CANDebugData.data[0] = ADCChannelNumArray[0];
CANDebugData.data[1] = ADCChannelNumArray[1];
CANDebugData.data[2] = ADCChannelNumArray[2];
CANDebugData.data[3] = ADCChannelNumArray[3];
CANDebugData.data[4] = ADCChannelNumArray[4];
CANDebugData.data[5] = ADCChannelNumArray[5];
CANDebugData.data[6] = ADCChannelNumArray[6];
CANDebugData.dataLen = 7;
CANDebugData.priority = 1;
(void)MCU_CANTxData(&CANDebugData);

}

  打印出来的ADCChannelNumArray值全部是0.  必须要在初始化函数中,对数组进行初始化赋值,然后使用才是正确的。

    void ADC_Init(void)

{

   .....

   .....

// 对数组进行初始化赋值

ADCChannelNumArray[0]= 7;
ADCChannelNumArray[1]= 1;
ADCChannelNumArray[2]= 9;
ADCChannelNumArray[3]= 5;
ADCChannelNumArray[4]= 6;
ADCChannelNumArray[5]= 0;
ADCChannelNumArray[6]= 8;

CANDebugData.id = 0x68;
CANDebugData.RTR = 0;
CANDebugData.data[0] = ADCChannelNumArray[0];
CANDebugData.data[1] = ADCChannelNumArray[1];
CANDebugData.data[2] = ADCChannelNumArray[2];
CANDebugData.data[3] = ADCChannelNumArray[3];
CANDebugData.data[4] = ADCChannelNumArray[4];
CANDebugData.data[5] = ADCChannelNumArray[5];
CANDebugData.data[6] = ADCChannelNumArray[6];
CANDebugData.dataLen = 7;
CANDebugData.priority = 1;
(void)MCU_CANTxData(&CANDebugData);

}

posted @ 2021-01-22 11:57  xiaokangkp  阅读(478)  评论(1编辑  收藏  举报