初级会员
- 积分
- 153
- 金钱
- 153
- 注册时间
- 2016-5-22
- 在线时间
- 42 小时
|
5金钱
测量AD时,在小于1V时,调试的时候,显示的值是正确的,但全速运行时显示的值就会扩大10倍,大于1V采样显示正常....例如我采量的电压是0.327V,采样时行调试的过程步进得到的是buf[0]=0x0C,buf[1]=0xCA,全速得到的是buf[0]=0x7F,buf[1]=0xFD,扩大了10倍
工作时程序:
u16 adcx,adcx1;
float Temp,Temp1;
char buf[4],i;
adcx=Get_Adc_Average(ADC_Channel_14,5);//AD测量传感器电压
GPIO_SetBits(GPIOC,GPIO_Pin_5);//关传感器
adcx1=Get_Adc_Average(ADC_Channel_16,5);//AD测量电池电压
ADC_Cmd(ADC1, DISABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,DISABLE);
Temp=(float)adcx*(3.304/4096);
Temp1=(float)adcx1*(3.304/4096);
buf[0]=(unsigned int)(Temp*10000)>>8;
buf[1]=(unsigned int)(Temp*10000);
buf[2]=(unsigned int)(Temp1*10000)>>8;
buf[3]=(unsigned int)(Temp1*10000);
Uart_Init(115200);
GPIO_SetBits(GPIOB,GPIO_Pin_0);//控制开485发送
GPIO_ResetBits(GPIOD,GPIO_Pin_0); //控制开485供电
for (i=0;i<4;i++)
{ USART_SendData8(USART1,buf);
while (USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
}
|
最佳答案
查看完整内容[请看2#楼]
你这同样是两个物理过程,AD采样和串口发送,
AD采样结束的位置,是两个过程的结合部。
先分清问题的部位,是AD采样还是后面的处理、发送。
可以在AD采样结束的位置,设置断点,或者临时把数据保存一段,然后观察。
|