
stm8单片机中AD转换读取数据时这个语句怎么解释 bws_dat = ((ADC_DRH<<2) + ADC_DRL ); 得到十位的数据
ADC_CR1|=0x01;//启动AD转换while(!(ADC_CSR&0x80));//等待AD转换完成bws_dat=((ADC_DRH<<2)+ADC_DRL)...
ADC_CR1 |= 0x01; // 启动AD转换
while(!(ADC_CSR & 0x80)); // 等待AD转换完成
bws_dat = ((ADC_DRH<<2) + ADC_DRL ); //得到十位精度的数据
ADC_CSR=0x00;
return bws_dat; 展开
while(!(ADC_CSR & 0x80)); // 等待AD转换完成
bws_dat = ((ADC_DRH<<2) + ADC_DRL ); //得到十位精度的数据
ADC_CSR=0x00;
return bws_dat; 展开
1个回答
展开全部
更多追问追答
追问
它的AD是10位的,读取数据时设置成左对齐,上面的语句忘了写强制转换成unsigned int型了, bws_dat=((unsigned int)ADC_DRH)<<2)+ADC_DRL;,但是左移两位还是不太理解
追答
“读取数据时设置成左对齐”
所以最高两位在ADC_DRH的高2位,所以只需要左移2位就会移到16位变量的bit[9:8]了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询