From 69228ec57fb8539f6bf9f3f085fde635bb71499f Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期四, 29 二月 2024 17:31:08 +0800 Subject: [PATCH] 增加无GPS报文 --- Src/OnChipDevices/ADC.c | 85 ++++++++++++++++++++++++++++++------------ 1 files changed, 60 insertions(+), 25 deletions(-) diff --git a/Src/OnChipDevices/ADC.c b/Src/OnChipDevices/ADC.c index de06e6d..fbd823f 100644 --- a/Src/OnChipDevices/ADC.c +++ b/Src/OnChipDevices/ADC.c @@ -2,33 +2,68 @@ #include "main.h" uint16_t Get_ADC_Value() { -HAL_ADC_Start(&hadc); - HAL_ADC_PollForConversion(&hadc, 10); - if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc), HAL_ADC_STATE_REG_EOC)) - { - return HAL_ADC_GetValue(&hadc); - } + HAL_ADC_Start(&hadc); + HAL_ADC_PollForConversion(&hadc, 10); + if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc), HAL_ADC_STATE_REG_EOC)) + { + return HAL_ADC_GetValue(&hadc); + } } float bat_volt; uint8_t Get_Battary(void) -{static float last_value = 100; -static uint8_t first=1; - HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin, GPIO_PIN_RESET); - bat_volt = (float)Get_ADC_Value()/621; //(value/4096*3.3*2-3.5)/0.7 - HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin, GPIO_PIN_SET); - if(bat_volt>=3.5) - { - if(first) - { - first = 0; - bat_volt = (float)Get_ADC_Value()/621; - last_value =(bat_volt-3.5)*167;//(bat_volt-3.5)/0.6*100 - } - last_value = 0.9*last_value + (bat_volt-3.5)*16.7; - if(last_value>100) - last_value = 100; - if(last_value<0) - last_value = 0; +{ static float last_value = 100; + static uint8_t first=1; + HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin, GPIO_PIN_RESET); + bat_volt = (float)Get_ADC_Value()/621; //(value/4096*3.3*2-3.5)/0.7 + HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin, GPIO_PIN_SET); + if(bat_volt>=3.5) + { + if(first) + { + first = 0; + bat_volt = (float)Get_ADC_Value()/621; + last_value =(bat_volt-3.5)*167;//(bat_volt-3.5)/0.6*100 + } + last_value = 0.9*last_value + (bat_volt-3.5)*16.7; + if(last_value>100) + last_value = 100; + if(last_value<0) + last_value = 0; + } else { + last_value=0; + } + return last_value; } - return last_value; + +uint16_t verfint_cal,adc_val; +uint8_t Get_VDDVlotage(void) +{ static float last_value = 100; + static uint8_t first=1; + static uint16_t bat_count = 0; + if(bat_count++%600==0) + { + MX_ADC1_Init(); + Delay_Us(30); + adc_val = Get_ADC_Value(); + MX_ADC_DeInit(); + //temp_voltage = (float)Get_ADC_Value()/621; //(value/4096*3.3*2-3.5)/0.7 + verfint_cal = *(__IO uint16_t *)(0X1FF80078); + bat_volt = 3*(float)verfint_cal/adc_val-0.329; + if(bat_volt>=3.0) + { + if(first) + { + first = 0; + last_value =(bat_volt-3.0)*167;//(bat_volt-3.5)/0.6*100 + } + last_value = 0.9*last_value + (bat_volt-3.0)*16.7; + if(last_value>100) + last_value = 100; + if(last_value<0) + last_value = 0; + } else { + last_value=0; + } + } + return last_value; } \ No newline at end of file -- Gitblit v1.9.3