From cbe3b0a4c27e0d28628e4c57a7835526591c6201 Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期三, 06 三月 2024 22:10:15 +0800 Subject: [PATCH] V1.5 增加电量,心跳包功能,但是好像有bug,一段时间后UWB不测距。 --- Src/OnChipDevices/ADC.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 49 insertions(+), 0 deletions(-) diff --git a/Src/OnChipDevices/ADC.c b/Src/OnChipDevices/ADC.c index 14885d8..c029a89 100644 --- a/Src/OnChipDevices/ADC.c +++ b/Src/OnChipDevices/ADC.c @@ -1,5 +1,6 @@ #include "ADC.h" #include "main.h" + uint16_t Get_ADC_Value() { HAL_ADC_Start(&hadc); @@ -8,6 +9,18 @@ { return HAL_ADC_GetValue(&hadc); } +} +uint16_t GetRandomValue(void) +{ + uint16_t temp; + for(uint8_t i=0;i<16;i++) + { + if(Get_ADC_Value()%2) + { + temp=temp|(1<<i); + } + } + return temp; } float bat_volt; uint8_t Get_Battary(void) @@ -33,4 +46,40 @@ last_value=0; } 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) +// { + READC_Init(); + Delay_Ms(10); + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET); + 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.28; + 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; + } + printf("VCC:%.2f\r\n",bat_volt); + HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET); +//} + return last_value; } \ No newline at end of file -- Gitblit v1.9.3