给个单次采集的,先初始化,然后再每次调用GET_AD()函数,得到单次AD值
/********************AD初始化***************************/
void InitADC()
{
ADC1->CR1 = 0x20; //分频系数为4 单次转换模式 先不启动ADC转换
ADC1->CR2 = 0x08; //非外部触发 数据右对齐 禁止扫描模式
ADC1->CSR = 0x03; //禁止转换结束中断 设置转换通道为AIN3
ADC1->TDRL|= 0x08; //禁止AIN3施密特触发器功能
ADC1->CR1 |= 0x01; //第一次写1是从低功耗模式唤醒
}
/*******************************AD操作函数*************************/
unsigned int GET_AD()
{
unsigned int temph=0;
unsigned char templ=0;
ADC1->CR1 |= 0x01; //启动AD转换
while(!(ADC1->CSR&0x80)); //等待转换结束
ADC1->CSR &= ~0x80; //清除转换结束标志
templ = ADC1->DRL;
temph = ADC1->DRH; //读出AD转换结果
temph = ConTOINT(temph,templ); //将结果转化为16位unsigned int
return(temph);
}
查查编译器的安装目录下,有例子工程,里面有adc的例子,很简单,看看就明白。