Files
foc_Gimbal/APP/vcc_adc.c
2024-03-08 15:19:23 +08:00

44 lines
912 B
C

//
// Created by hu123456 on 2024/3/8.
//
#include "vcc_adc.h"
void adc_init(void)
{
HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED);
}
uint32_t adc_get_result(void)
{
ADC_ChannelConfTypeDef adc_ch_conf = {0};
adc_ch_conf.Channel = ADC_CHANNEL_8;
adc_ch_conf.Rank = ADC_REGULAR_RANK_1;
adc_ch_conf.SamplingTime = ADC_SAMPLETIME_810CYCLES_5;
adc_ch_conf.SingleDiff = ADC_SINGLE_ENDED;
adc_ch_conf.OffsetNumber = ADC_OFFSET_NONE;
adc_ch_conf.Offset = 0;
HAL_ADC_ConfigChannel(&hadc1, &adc_ch_conf);
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 10);
return HAL_ADC_GetValue(&hadc1);
}
float get_VCC(void)
{
uint32_t temp_val = 0;
float vcc;
for (uint8_t t = 0; t < 10; t++)
{
temp_val += adc_get_result();
HAL_Delay(5);
}
vcc = temp_val/10.f/65535.f * 3.3 * 11.f;
return vcc;
}