STM8L152 ADC1怎么使用内部基准

2019-07-19 20:30发布

我是初学STM8的小白,目前遇到的问题:void  ADC1_Init(void)
{
  CLK_PeripheralClockConfig (CLK_Peripheral_ADC1,ENABLE);                                     //开启ADC/USART时钟
  ADC_VrefintCmd(ENABLE);                                                                                //使能内部参考电压
  ADC_Init (ADC1,ADC_ConversionMode_Single,ADC_Resolution_12Bit,ADC_Prescaler_1);//单次转换,12位,ADC转换时钟1分频
  ADC_Cmd(ADC1,ENABLE);                                                                               //使能ADC1
  ADC_ChannelCmd (ADC1,ADC_Channel_0,ENABLE);                                             //使能通道0------PA6
}


unsigned int ADC1_getdata(void)
{  
   unsigned int adc1_value;
   ADC_SoftwareStartConv (ADC1);                 //开始ADC软件转换
   while(!ADC_GetFlagStatus (ADC1,ADC_FLAG_EOC));//等待转换结束
   ADC_ClearFlag (ADC1,ADC_FLAG_EOC);            //清除对应标志
   adc1_value=ADC_GetConversionValue (ADC1);     //获取转换值
   return adc1_value;
}


这个在初始化使能内部参考电压
ADC_VrefintCmd(ENABLE);     //使能内部参考电压
但是在实际使用时这条语句加上和屏蔽掉,对ADC转换的结果没有任何影响,这说明根本就没有使用内部参考电压。
此单片机是32脚的没有独立的vref+脚,此脚跟电源VDD是同一个脚,也就是外部参考电压是电源的3.3V。
请大神指点一下,是不是ADC还有其他地方需要设置一下才可以成功还是这个单片机内部根本就没有内部参考源。
另我想知道,假如是64个脚的单片机有独立的vref+脚,那如果使用内部的参考电压比如1.224V的,那外部引脚vref+和vref-
怎么处理? 跪谢大神,我一共就31分,如果15分不够我再可以给。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。