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

  }



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
xuande
1楼-- · 2019-07-19 23:19
 精彩回答 2  元偷偷看……
xuande
2楼-- · 2019-07-20 03:25

“步进得到的”,怎么观察的?
“全速得到的”,又是怎么观察的?

aiyy
3楼-- · 2019-07-20 03:35
xuande 发表于 2016-8-3 15:51
“步进得到的”,怎么观察的?
“全速得到的”,又是怎么观察的?

在IAR调试中步进,全速直接显示在串口
xuande
4楼-- · 2019-07-20 04:08
 精彩回答 2  元偷偷看……
aiyy
5楼-- · 2019-07-20 08:52
xuande 发表于 2016-8-3 16:17
调试中步进,是用仿真器观察的?

对啊,直接仿真观察的
aiyy
6楼-- · 2019-07-20 10:04
xuande 发表于 2016-8-3 16:22
你这同样是两个物理过程,AD采样和串口发送,
AD采样结束的位置,是两个过程的结合部。
先分清问题的部 ...

发现是AD采样的问题,将断点设在AD采样的下一句,采到的值就会变大10,将断点设在AD采样再步进就显示正常

一周热门 更多>