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到底是什么值,跳不跳
这部分代码本身没有问题,非要说什么问题的话,就是效率低了点。