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);
}