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分不够我再可以给。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
世吉
1楼-- · 2019-07-20 00:28
我也遇到同样问题,就大神指点!
正点原子
2楼-- · 2019-07-20 04:17
帮顶
lanxin
3楼-- · 2019-07-20 09:33
 精彩回答 2  元偷偷看……
ChaserMCU
4楼-- · 2019-07-20 14:36
我现在也在搞这个ADC,正在解决这个问题,做得板子把Vref+这个脚留出来的准备接3.0的参考电压,不知道你那个原因是不是外部引脚Vref+接上VDD或者VDDA造成的呢?我这里这个调试板子就是接到VDD上了,一旦用内部参考,读回来的值和外部参考一样
s414545584
5楼-- · 2019-07-20 19:06
 精彩回答 2  元偷偷看……

一周热门 更多>