zhyinch
2022-05-28 b5dc11acf7d70e2ddcff627db25445e2588b3f7a
源码/核心板/Src/OnChipDevices/ADC.c
@@ -11,6 +11,7 @@
   
ADC_DeInit(ADC1);//??
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1?ADC2????,????
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//ADC????,????????
ADC_InitStructure.ADC_ScanConvMode = DISABLE;   //ADC?????(ENABLE??????)
@@ -29,10 +30,10 @@
ADC_StartCalibration(ADC1);//????
while(ADC_GetCalibrationStatus(ADC1));//??????
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_1Cycles5);
}
static u16 Get_ADC_Value()
 u16 Get_ADC_Value(void)
{
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);//????,ADC????
    while(ADC_GetSoftwareStartConvStatus(ADC1));//??????
@@ -41,12 +42,20 @@
float bat_volt;
uint8_t Get_Battary(void)
{static float last_value = 100;
static u8 first=1;
   bat_volt = (float)Get_ADC_Value()/621;  //(value/4096*3.3*2-3.5)/0.7
   last_value = 0.9*last_value + (bat_volt-3.5)*14.3;
   if(bat_volt>=3.5)
   {
      if(first)
      {
      first = 0;
         last_value =(bat_volt-3.5)*143;
      }
      last_value = 0.9*last_value + (bat_volt-3.5)*14.3;
   if(last_value>100)
      last_value = 100;
   if(last_value<0)
      last_value = 0;
}
   return last_value;   
}