float转换成4个字节数组


void ADC1_ZH(float dat)                        
{
    unsigned char p;
    unsigned char *hex=(unsigned char *)&dat;
    for(p=0;p<4;p++)
    ADC1_buf[p]=hex[p];
    buf[103]=ADC1_buf[0];
    buf[104]=ADC1_buf[1];
    buf[105]=ADC1_buf[2];
    buf[106]=ADC1_buf[3];                            
    
}

void ADC2_ZH(float dat)                            
{
    unsigned char p;
    unsigned char *hex=(unsigned char *)&dat;    
    for(p=0;p<4;p++)
    ADC2_buf[p]=hex[p];
    buf[107]=ADC2_buf[0];
    buf[108]=ADC2_buf[1];
    buf[109]=ADC2_buf[2];
    buf[110]=ADC2_buf[3];                        
    
}


这个float dat 我用的是ADC采样的结果,单独输入一个信号源的时候,无论是1还是2都没问题,同时输入2个信号源的时候,ADC2会受ADC1的影响,乱跳,但我用printf语句测试,2个信号源输入的时候ADC采样是没问题的,现在怀疑是强制转换的dat那里出了问题,请哪位大虾帮忙解决一下,谢谢。ADC采样没问题,已经排查过了

union tt
{
   unsigned char bit[4];
   float f;
};
直接用个联合体呢

你怀疑这里出了问题,那不能只靠猜呀,在函数里打个printf,看ADC1_buf和ADC2_buf到底是什么值,跳不跳

这部分代码本身没有问题,非要说什么问题的话,就是效率低了点。