//AD初始化
void AD_int(void)
{
u8 value,i;
u16 ADC_TDR_tmp;
ADC2->CSR = 10; //AIN10通道选择
//select 4MHz clock based on 16MHz fMaster (div4), single mode
ADC2->CR1 = 0x20;
ADC2->CR2 = 0x08;//数据右对齐
ADC2->TDRH=0x24;//AIN13 AIN10禁止施密特触发
ADC2->CR1 |= 0X01;//使能ADC
value=30;
while(value--); //等待ADC稳定
ADC2->CSR &= 0x7f;//清EOC标志
ADC2->CR1 |= 0x01;//启动AD
i=0;
do{
if(ADC2->CSR&0x80)//转换结束
{
DIin=ADC2->DRH*256+ADC2->DRL;//电流偏置代码获取
ADC2->CR1 |= 0x01;//启动AD
i++;
}
}while(i<20);//第20次采集作为电流真实偏置代码处理
ADC2->CSR |= 13; //AIN13通道选择
ADChan=0;
ADC2->CSR &= 0x7f;//清EOC标志
ADC2->CR1 |= 0x01;//启动AD
}
电流偏置代码ADC的高八位为什么要乘以256?为什么ADC的数值设置成30,来达到稳定?
此帖出自
小平头技术问答
ADC2->DRH保存了高2位
ADC2->DRL保存了低8位
ADC2->DRH*256相当于把高2位左移8位也可以写成ADC2->DRH<<8
一周热门 更多>