#ifndef __DRV_ADC_H_ #define __DRV_ADC_H_ #include "tmp75.h" #include "stdlib.h" #include "string.h" #include "gd32f4xx.h" #include "gd32f4xx_adc.h" #include "gd32f4xx_dma.h" // #include "rtthread.h" /* 自定义宏,方便修改通道和引脚 */ #define ADCX ADC1 #define VOLTAGE_ADC_CHANNEL ADC_CHANNEL_12 #define CURRENT_ADC_CHANNEL ADC_CHANNEL_13 #define ADC_GPIO_PORT GPIOC #define VOLTAGE_ADC_PIN GPIO_PIN_2 #define CURRENT_ADC_PIN GPIO_PIN_3 #define LB_V_TIMES 7 //电压采样滤波次数 #define LB_I_TIMES 12 //电流采样滤波次数 #define LB_T_TIMES 7 //温度采样滤波次数 #define LB_V_DEL 1 //电压滤波最高最低各删除个数 #define LB_I_DEL 2 //电流滤波最高最低各删除个数 /* adc模式配置参数 ENABLE DISABLE */ #define CONTINUOUS_STATUS DISABLE // 是否开启连续转换 // #define SEQUENCE_CHANNEL ADC_ROUTINE_CHANNEL // 注入组还是规则组 #define SEQUENCE_CHANNEL ADC_INSERTED_CHANNEL // 注入组还是规则组 #define SCAN_STATUS ENABLE // 是否开启扫描模式 #define CHANNEL_LENGTH 2 // 通道数量:1~16 /* adc dma */ // #define DMAX DMA1 #ifdef DMAX #define DMA_STATUS DISABLE // 是否开启dma #define USER_DMA_ADC_CHANNEL DMA_CH3 //DMA通道:ADC0:DMA_CH0 DMA_CH4 // ADC1:DMA_CH2 DMA_CH3 // ADC2:DMA_CH0 DMA_CH3 #define USER_DMA_ADC_SUBPERI DMA_SUBPERI1 //DMA外设源:ADC0:DMA_SUBPERI0 // ADC1:DMA_SUBPERI1 // ADC2:DMA_SUBPERI2 #define DMA_ADC_IRQn DMA1_Channel0_IRQn //DMA1_Channel0_IRQn //DMA1_Channel1_IRQn //DMA1_Channel2_IRQn //DMA1_Channel3_IRQn //DMA1_Channel4_IRQn #define DMA_ADC_PRIORITY_PRE 0 //抢占优先级 #define DMA_ADC_PRIORITY_SUB 1 //子优先级 #endif void adc_init(void); void adc_rcu_config(void); void adc_gpio_config(void); void adc_dma_config(void); void adc_config(void); float ptz_Voltage_collect_adc1_task(); float ptz_Current_collect_adc1_task(); float ptz_temperature_collect_tmp75_task(); __weak void DMA1_Channel0_IRQHandler(void); #endif