/********************************************************************************************************* * 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()); }