| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /*********************************************************************************************************
- * Module : Adc.c
- * Abstract : Adc modules,of which be used to gather temprature!
- * Version : 1.0.0
- * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.)
- * Complete : 2025-02-28
- * Content : None
- * Note : None
- *********************************************************************************************************/
- #include "Adc.h"
- #include "gd32e230x_conf.h"
- #include "SysTick.h"
- void adc_init(void)
- {
- rcu_periph_clock_enable(RCU_ADC);
- rcu_adc_clock_config(RCU_ADCCK_APB2_DIV6);
- rcu_periph_clock_enable(RCU_GPIOB);
-
- gpio_mode_set(GPIOB, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_0);
-
- adc_deinit();
-
- adc_special_function_config(ADC_CONTINUOUS_MODE, ENABLE);
- adc_external_trigger_source_config(ADC_REGULAR_CHANNEL, ADC_EXTTRIG_REGULAR_NONE);
- adc_data_alignment_config(ADC_DATAALIGN_RIGHT);
- adc_channel_length_config(ADC_REGULAR_CHANNEL, 1U);
- adc_regular_channel_config(0U, ADC_CHANNEL_8, ADC_SAMPLETIME_55POINT5);
- adc_external_trigger_config(ADC_REGULAR_CHANNEL, ENABLE);
- adc_resolution_config(ADC_RESOLUTION_12B);
-
-
- adc_enable();
- DelayNms(1);
- adc_calibration_enable();
-
- }
- uint16_t get_adc(void)
- {
- adc_software_trigger_enable(ADC_REGULAR_CHANNEL);
- while(!adc_flag_get(ADC_FLAG_EOC));
- adc_flag_clear(ADC_FLAG_EOC);
- return (adc_regular_data_read());
- }
|