测量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);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
“步进得到的”,怎么观察的?
“全速得到的”,又是怎么观察的?
在IAR调试中步进,全速直接显示在串口
对啊,直接仿真观察的
发现是AD采样的问题,将断点设在AD采样的下一句,采到的值就会变大10,将断点设在AD采样再步进就显示正常
一周热门 更多>