STM8L051F3 ADC问题

2019-07-19 21:11发布

测量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);

  }



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。