测试代码如下: uint32_t ResultVolt = 0; uint8_t i; for(i=0; i<8; i++) { //等待转换完成 while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); ResultVolt +=(uint32_t) ADC_GetConversionValue(ADC1); } ResultVolt = ResultVolt >> 3; //求平均(除8) ResultVolt = (ResultVolt*3300) >> 12; //计算得到1000倍的电压值(整数值, 无小数点) return ResultVolt; |
是不是内部基准值是ADC拿来对比的,内部0-2.7,电池0-7.8,按比例来对比?
1、已经是float类型的小数运算了,不能用整数运算;
2、楼主把那个ResultVolt放在括号内一起右移12位好像有点问题。
3、电压的计算公式应该是(float)(3300 mV÷4096)×(ADC转换值8次累加值>>3),
评分
查看全部评分