/* code begin define */
#define ADC_1_CHANNEL_NUM 6// ADC1 电压采集通道数。
/* code end define */
/* code begin data type */
typedef struct
{
ADC_HandleTypeDef* hadc;// adc 句柄。
uint32_t dataBuf[ADC_1_CHANNEL_NUM];// 电压采样缓存区。
float (*getVol)(uint8_t num);// 获取指定通道电压值。
}obj_ADC1;// ADC1 控制类。
/* code end data type */
2. 在 .c 中创建 ADC 控制类对象,并声明需要实现的方法
/* code begin variable definition */
obj_ADC1 user_ADC1;/* code end variable definition *//* code begin function statement */voidinitUserADC1(void);staticfloatuserADC1_getVol(uint8_t num);/* code end function statement */
3. 在 .c 中实现具体方法
/* code begin function body */voidinitUserADC1(void){
user_ADC1.hadc =&hadc1;memset(user_ADC1.dataBuf,0x00, ADC_1_CHANNEL_NUM);
user_ADC1.getVol = userADC1_getVol;HAL_ADC_Start_DMA(user_ADC1.hadc, user_ADC1.dataBuf, ADC_1_CHANNEL_NUM);}staticfloatuserADC1_getVol(uint8_t num){return user_ADC1.dataBuf[num]*3.3f/4096;}/* code end function body */
4. 在 .h 中声明全局变量和方法
/* code begin variable statement */extern obj_ADC1 user_ADC1;// ADC1 控制类对象。/* code end variable statement *//* code begin function statement */voidinitUserADC1(void);// 初始化 ADC1。/* code end function statement */