各位老师,小弟遇到一个问题:STM8L 151K4T6的芯片,使用ADC读取电压数据时,总是不成功,现象是这样的,
无论在哪个位置(1--2.5V之间)读出的数据都是 0x04f0(上下几个bLs浮动),请老师们指教,小弟不胜感激!
程序如下:
void ADC_Init () //ADC单元模块初始化
{
CLK_PCKENR2 = 0x23; //COMP1/COMP2、TIM1、ADC1时钟
ADC1_CR1 = 0x00; //单次转换,禁止中断、模拟看门狗,12位分辨率,关闭转换开关。
ADC1_CR2 = 0x00; //禁止外触发,ADC时钟为CPU时钟,采样时间4个ADC周期
ADC1_SR = 0x00; //将标志位清0,这里只使用EOC(转换结束位)
ADC1_SQR1= 0x80; //禁用DMA
ADC1_SQR2= 0x00;
ADC1_SQR3= 0x00;
ADC1_TRIGR4 = 0x07; //0、1、2通道施密特禁用。
GPIO_init ( ); //引脚初始化函数,定义各引脚,PA5 引脚设置为悬浮输入。
}
Uint number=0;
ADC1_SR = 0x00; //将标志位清0,
ADC1_SQR4 = 0x02; //选择目标通道AIN1 (PA5)
ADC1_CR1_ADON = 1; //ADON置1,唤醒ADC
Delay_Ms(10);
ADC1_CR1_START = 1; //START置1,开始数据转换
while(ADC1_SR_EOC == 0); //当EOC(ADC1_SR的0位) 变为1时,停止等待
ADC1_CR1_ADON = 0;
ADC1_SR_EOC = 0; //将转换结束位清0,
number |= (ADC1_DRH << 8);
number |= ADC1_DRL;
|