一:主要功能
1,10位的分辨率
2,单次和连续转换模式。单次转换模式,转换一次就停止转换;连续转换模式,一旦开启,一直转换。
3,预分频可编程设置。adc时钟可由系统主时钟经分频后提供。
4,可以选择外部中断(ASC_ETR)或者定时器触发信号(TRGO)作为A/D转换启动触发信号。不仅可以手动开启ADC转换,也可由外部中断或者TIM1的触发信号来开启。
5,参考电压输入的两个引脚的电压范围:0V<=VREF-<=0.5V,2.7V<=VREF+<=VDDA。
6,转换结束后可以产生中断,可以设置寄存器开启转换结束中断。
7,数据对齐方式有左对齐和右对齐。
二:寄存器介绍
1,ADC控制/状态寄存器(ADC_CSR)
2,ADC 配置寄存器 1 (ADC_CR1)
3,ADC 配置寄存器 2 (ADC_CR2)
4,ADC配置寄存器 3 (ADC_CR3)
5,ADC 数据高位寄存器(ADC_DRH) ,低位类似
6,ADC高位数据缓存寄存器(ADC_DBXRH,X=0..7 OR 0..9)
三,连续转换配置步骤
1,连续转换模式(寄存器ADC_CR1)
2,通道选择(寄存器ADC_CSR)
3,对齐方式配置(寄存器ADC_CR2)
4,从低功耗中唤醒(寄存器ADC_CR1)
5,AD连续转换开启(寄存器ADC_CR1)
ad转换值读取:VADC= (unsigned int)ADC_DRL;VADC|= ADC_DRH<<8; //转换的值直接送入VADC
寄存器中值不取走就会被覆盖
四:代码
功能:ad连续转换,也就是开启ad转换之后ad一直让他自己转换,我们在主程序里读取ad存的值就可以,超过某一电压就开启小灯,低于某一电压就关闭小灯
代码:
ADC_CR1=0X02;//连续转换模式 ADC_CSR=0X06;//通道选择 ADC_CR2|=0x08; //默认右对齐 ADC_CR1|=0x01; //从低功耗中唤醒 ADC_CR1|=0x02; ADC_CR1|=0x01; //ADC_CR1|=0x01; //AD连续转换开始,不可直接写入0x03 while(1) { VADC= (unsigned int)ADC_DRL; VADC|= ADC_DRH<<8; //转换的值直接送入VADC if(VADC>=0x021c) PG_ODR|=0X01;//小灯亮 else PG_ODR&=0XFE;//小灯灭 //delay(50000); }