打印
[STM8]

STM8L ADC1转换内部参考电压代码

[复制链接]
5075|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gym216|  楼主 | 2015-12-13 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "stm8l15x.h"

u16 value[10];
void delay_us(u16 n);

void main(void)
{
  u8 i=0;
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
  CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
  ADC_DeInit(ADC1);
  ADC_Init(ADC1,ADC_ConversionMode_Single,ADC_Resolution_12Bit,ADC_Prescaler_2);
  ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels,ADC_SamplingTime_384Cycles);
  ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels,ADC_SamplingTime_9Cycles);
  ADC_DMACmd(ADC1, DISABLE);
  /* Infinite loop */
  while (1)
  {
    ADC_ChannelCmd(ADC1, ADC_Channel_Vrefint,ENABLE);//选择内部基准通道
    ADC_Cmd(ADC1, ENABLE);//ADON
    ADC_VrefintCmd(ENABLE);//TSON
    delay_us(5);
    for (i=0;i<10;i++)
    {
      ADC_SoftwareStartConv(ADC1);//START
      while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==0){}//wait for EOC
      value[i] = ADC_GetConversionValue(ADC1);
    }
    ADC_Cmd(ADC1, DISABLE);//ADON复位
    ADC_VrefintCmd(DISABLE);//TSON复位
    ADC_ChannelCmd(ADC1, ADC_Channel_Vrefint,DISABLE);//关闭通道
    delay_us(0xff);
  }
}
/*****************延时us函数*******************/
void delay_us(u16 n)
{
  u32 i=n*16;
  while(--i){}
}
沙发
gym216|  楼主 | 2015-12-13 21:48 | 只看该作者
看了几遍手册,代码重写了n次,用stlink调试,value的结果老是乱跑,用的是stm8l152r8,求解

使用特权

评论回复
板凳
金融小数| | 2015-12-13 23:03 | 只看该作者
别玩了,内部参考电压不准

使用特权

评论回复
地板
lbm232119| | 2016-2-22 15:33 | 只看该作者
gym216 发表于 2015-12-13 21:48
看了几遍手册,代码重写了n次,用stlink调试,value的结果老是乱跑,用的是stm8l152r8,求解 ...

楼主说的这个问题解决了吗,我也是遇到这个问题,读出来的value总是不稳定。我用的是8l052c6

使用特权

评论回复
5
hn_sun| | 2017-1-15 00:28 | 只看该作者
我是用的STM8L052R8T6,不妨把STM8L的内部参考电压输出来,我这个IC是在PC2上,电压会变动,曾输出过 1.210, 1.213, 1.215, 1.217,所以根本不能用。。。

使用特权

评论回复
6
zhhj526646801| | 2019-7-20 12:47 | 只看该作者
lbm232119 发表于 2016-2-22 15:33
楼主说的这个问题解决了吗,我也是遇到这个问题,读出来的value总是不稳定。我用的是8l052c6 ...

有没有程序提供一下,刚好想调一下这个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

61

帖子

2

粉丝