| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*********************************************************************************************************
- * 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 "gd32f30x_libopt.h"
- #include "SysTick.h"
- void adc_init(void)
- {
- // rcu_periph_clock_enable(RCU_ADC0);
- // rcu_periph_clock_enable(RCU_GPIOA);
- // gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_MAX,GPIO_PIN_6);
- // rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV4);
- //
- // adc_special_function_config(ADC0, ADC_SCAN_MODE, ENABLE);
- // adc_external_trigger_source_config(ADC0, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
- // adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT);
- // adc_mode_config(ADC_DAUL_REGULAL_PARALLEL);
- // adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 2);
- // adc_regular_channel_config(ADC0, 0, ADC_CHANNEL_6, ADC_SAMPLETIME_55POINT5);
- // adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE);
- // adc_enable(ADC0);
- // adc_calibration_enable(ADC0);
- // delay_1ms(1);
- #if 1
- rcu_periph_clock_enable(RCU_ADC0);
- rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV6);
-
-
- gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_MAX,GPIO_PIN_6);
-
- adc_deinit(ADC0);
-
- adc_special_function_config(ADC0,ADC_CONTINUOUS_MODE, ENABLE);
- adc_external_trigger_source_config(ADC0,ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
- adc_data_alignment_config(ADC0,ADC_DATAALIGN_RIGHT);
- adc_channel_length_config(ADC0,ADC_REGULAR_CHANNEL, 1U);
- adc_regular_channel_config(ADC0,0U, ADC_CHANNEL_6, ADC_SAMPLETIME_55POINT5);
- adc_external_trigger_config(ADC0,ADC_REGULAR_CHANNEL, ENABLE);
- adc_resolution_config(ADC0,ADC_RESOLUTION_12B);
-
-
- adc_enable(ADC0);
- DelayNms(1);
- adc_calibration_enable(ADC0);
- #endif
- }
- uint16_t get_adc(void)
- {
- #if 1
- adc_software_trigger_enable(ADC0,ADC_REGULAR_CHANNEL);
- while(!adc_flag_get(ADC0,ADC_FLAG_EOC));
- adc_flag_clear(ADC0,ADC_FLAG_EOC);
- return (adc_regular_data_read(ADC0));
- #endif
-
- return 0;
- }
|