| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #include "hal_adc.h"
- #include "sys_log.h"
- #include "sys_timer.h"
- #include "delay.h"
- #include "board.h"
- #define GET_ADC_CNT 3
- ADC_HandleTypeDef ADC1_Handler;
- void HAL_AdcInit(void)
- {
- RCC_PeriphCLKInitTypeDef ADC_CLKInit;
- ADC_CLKInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
- ADC_CLKInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
- HAL_RCCEx_PeriphCLKConfig(&ADC_CLKInit);
- ADC1_Handler.Instance = ADC1;
- ADC1_Handler.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- ADC1_Handler.Init.ScanConvMode = DISABLE;
- ADC1_Handler.Init.ContinuousConvMode = DISABLE;
- ADC1_Handler.Init.NbrOfConversion = 1;
- ADC1_Handler.Init.DiscontinuousConvMode = DISABLE;
- ADC1_Handler.Init.NbrOfDiscConversion = 0;
- ADC1_Handler.Init.ExternalTrigConv = ADC_SOFTWARE_START;
- HAL_ADC_Init(&ADC1_Handler);
- HAL_ADCEx_Calibration_Start(&ADC1_Handler);
- }
- void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
- {
- GPIO_InitTypeDef GPIO_Initure;
- __HAL_RCC_ADC1_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
- GPIO_Initure.Pin = ADC_PIN;
- GPIO_Initure.Mode = GPIO_MODE_ANALOG;
- GPIO_Initure.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(ADC_GPIO, &GPIO_Initure);
- }
- static uint16_t Get_Adc(uint32_t ch)
- {
- ADC_ChannelConfTypeDef ADC1_ChanConf;
- ADC1_ChanConf.Channel = ch;
- ADC1_ChanConf.Rank = 1;
- ADC1_ChanConf.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
- HAL_ADC_ConfigChannel(&ADC1_Handler, &ADC1_ChanConf);
- HAL_ADC_Start(&ADC1_Handler);
- HAL_ADC_PollForConversion(&ADC1_Handler, 10);
- return (uint16_t)HAL_ADC_GetValue(&ADC1_Handler);
- }
- uint16_t HAL_AdcGetVal(void)
- {
- u32 temp_val = 0;
- u8 t;
- for (t = 0; t < GET_ADC_CNT; t++)
- {
- temp_val += Get_Adc(ADC_CHANNEL_1);
- delay_ms(3);
- }
- return temp_val / GET_ADC_CNT;
- }
- void get_adv_val_timer_callback(void)
- {
- int mv;
- uint16_t val = HAL_AdcGetVal();
- mv = val*(3.3/4096)*1000;
- DLOG_I("adv_val:%d,mv:%d",val,mv);
- }
- void HAL_AdcGetValTimerInit(void)
- {
- HAL_TimerRegister(get_adv_val_timer_callback, 1000);
- }
|