STM8获取电压值
STM8获取电压值
(1)端口定义
static void ADC_POWER_Config()
{
/* Init GPIO for ADC1 */
GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);//可变电阻
ADC1_DeInit();
ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_2, ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL0, ENABLE);
ADC1_Cmd(ENABLE);
}
(2)获取电压值(这里采集五次取平均值)
#define BATTERY_CHECK_COUNT_PER_COLLECT 5 //每次采集的次数
u16 Get_ADC_POWER_Value(void)
{
u16 nBattery_Check_Value = 0;
u16 nNum = 0;
for(nNum = 0; nNum < BATTERY_CHECK_COUNT_PER_COLLECT; nNum++)//采集BATTERY_CHECK_COUNT_PER_COLLECT次,累加采集的电量值
{
ADC1_StartConversion();//开始转换
nBattery_Check_Value += ADC1_GetConversionValue(); //累加读取adc的转换值
}
nBattery_Check_Value = nBattery_Check_Value/(BATTERY_CHECK_COUNT_PER_COLLECT*10);//求出电量平均值
return nBattery_Check_Value;
}
(3)main函数
void main(void)
{
ADC_POWER_Config();
u16 nBattery_Check_Value2 = 0;
nBattery_Check_Value2 = Get_ADC_POWER_Value(); //读取电量
printf("nBattery_Check_Value2 = %d\n",nBattery_Check_Value2);
}