union transform
{
float ADC_ConvertedValueLocal[NOFCHANEL];
char ADC_CHAR[NOFCHANEL*4+4];
} ;
union transform t;
void Test_ADC_PRINTF(void)
{ t.ADC_CHAR[NOFCHANEL*4+0]=0x00;
t.ADC_CHAR[NOFCHANEL*4+1]=0x00;
t.ADC_CHAR[NOFCHANEL*4+2]=0x80;
t.ADC_CHAR[NOFCHANEL*4+3]=0x7f;
while (1)
{
t.ADC_ConvertedValueLocal[0] = (float)ADC_ConvertedValue[0] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[1] = (float)ADC_ConvertedValue[1] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[2] = (float)ADC_ConvertedValue[2] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[3] = (float)ADC_ConvertedValue[3] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[4] = (float)ADC_ConvertedValue[4] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[5] = (float)ADC_ConvertedValue[5] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[6] = (float)ADC_ConvertedValue[6] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[7] = (float)ADC_ConvertedValue[7] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[8] = (float)ADC_ConvertedValue[8] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[9] = (float)ADC_ConvertedValue[9] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[10] = (float)ADC_ConvertedValue[10] / 4096.0f * 3.3f * 1.5f;
t.ADC_ConvertedValueLocal[11] = (float)ADC_ConvertedValue[11] / 4096.0f * 3.3f * 1.5f;
for (int i=0;i<(NOFCHANEL*4+4);i++)
{
printf("%c",t.ADC_CHAR[i]);
}
Delay_MS(1);
}
}
这里面ADC_ConvertedValueLocal[NOFCHANEL]是用来接受adc采集的数组,你完全可以把他换成其他,NOFCHANEL是通道数,其实就是12,通过联合我把float转化成了4个char数组。
另外 Delay_MS(1);是写的延时函数,cv的时候别带上去。
在718的考核中遇到了这个问题,满互联网的找也找不到,太痛苦了,但是终于解决了,希望对后来人有所帮助。