#include "McuBspAdc.h" #define MCU_BSP_ADC_DISABLE 0 #define MCU_BSP_ADC_ENABLE 1 static ADC_HandleTypeDef gAdcHandle1; static ADC_HandleTypeDef gAdcHandle2; static ADC_HandleTypeDef gAdcHandle3; static float gMcuBspAdcStdV = 3.3f; // 基准电压默认值 static unsigned char gAdcInitFinishFlag = 0; // ADC初始化完成标志位 static unsigned int gAdcValue[20] = {0}; // ADC的20组采样值 /* 取20组数据,去掉最大最小值取平均值 */ static int McuBspAdcHandleData(ADC_HandleTypeDef *hadc, float *Value); /* ADC初始化过程 */ int McuBspAdcInit(void) { /* 表示已经初始化过 */ if (gAdcInitFinishFlag == MCU_BSP_ADC_ENABLE) { return 0; } /* 初始化物理ADC1 */ gAdcHandle1.Instance = ADC1; gAdcHandle1.Init.DataAlign = ADC_DATAALIGN_RIGHT; // 数据对齐方式,一般为右对齐 gAdcHandle1.Init.ScanConvMode = ADC_SCAN_DISABLE; // 扫描模式打开或关闭(打开则是多通道模式) gAdcHandle1.Init.ContinuousConvMode = DISABLE; // 连续转换模式 gAdcHandle1.Init.NbrOfConversion = 1; // 配置ADC规则通道的个数 gAdcHandle1.Init.DiscontinuousConvMode = DISABLE; // 间断模式 gAdcHandle1.Init.NbrOfDiscConversion = 1; // 间断模式的转换数据 gAdcHandle1.Init.ExternalTrigConv = ADC_SOFTWARE_START; // 软件调用开启转换 if (HAL_ADC_Init(&gAdcHandle1) != HAL_OK) { return -1; } /* 初始化物理ADC2 */ gAdcHandle2.Instance = ADC2; gAdcHandle2.Init.DataAlign = ADC_DATAALIGN_RIGHT; // 数据对齐方式,一般为右对齐 gAdcHandle2.Init.ScanConvMode = ADC_SCAN_DISABLE; // 扫描模式打开或关闭(打开则是多通道模式) gAdcHandle2.Init.ContinuousConvMode = DISABLE; // 连续转换模式 gAdcHandle2.Init.NbrOfConversion = 1; // 配置ADC规则通道的个数 gAdcHandle2.Init.DiscontinuousConvMode = DISABLE; // 间断模式 gAdcHandle2.Init.NbrOfDiscConversion = 1; // 间断模式的转换数据 gAdcHandle2.Init.ExternalTrigConv = ADC_SOFTWARE_START; // 软件调用开启转换 if (HAL_ADC_Init(&gAdcHandle2) != HAL_OK) { return -1; } /* 初始化物理ADC3 */ gAdcHandle3.Instance = ADC3; gAdcHandle3.Init.DataAlign = ADC_DATAALIGN_RIGHT; // 数据对齐方式,一般为右对齐 gAdcHandle3.Init.ScanConvMode = ADC_SCAN_DISABLE; // 扫描模式打开或关闭(打开则是多通道模式) gAdcHandle3.Init.ContinuousConvMode = DISABLE; // 连续转换模式 gAdcHandle3.Init.NbrOfConversion = 1; // 配置ADC规则通道的个数 gAdcHandle3.Init.DiscontinuousConvMode = DISABLE; // 间断模式 gAdcHandle3.Init.NbrOfDiscConversion = 1; // 间断模式的转换数据 gAdcHandle3.Init.ExternalTrigConv = ADC_SOFTWARE_START; // 软件调用开启转换 if (HAL_ADC_Init(&gAdcHandle3) != HAL_OK) { return -1; } /* 进行ADC校准 */ if (HAL_ADCEx_Calibration_Start(&gAdcHandle1) != HAL_OK) { } if (HAL_ADCEx_Calibration_Start(&gAdcHandle2) != HAL_OK) { } if (HAL_ADCEx_Calibration_Start(&gAdcHandle3) != HAL_OK) { } gAdcInitFinishFlag = MCU_BSP_ADC_ENABLE; return 0; } /* 物理ADC反初始化过程 */ int McuBspAdcDeInit(void) { if (gAdcInitFinishFlag != MCU_BSP_ADC_ENABLE) { return 0; } /* 反初始化物理ADC1 */ if (HAL_ADC_DeInit(&gAdcHandle1) != HAL_OK) { return -1; } /* 反初始化物理ADC2 */ if (HAL_ADC_DeInit(&gAdcHandle2) != HAL_OK) { return -1; } /* 反初始化物理ADC3 */ if (HAL_ADC_DeInit(&gAdcHandle3) != HAL_OK) { return -1; } gAdcInitFinishFlag = MCU_BSP_ADC_DISABLE; return 0; } /* 获取ADC数据 */ int McuBspAdcGetData(unsigned int AdcNum, float *AdcValue) { ADC_ChannelConfTypeDef sConfig; int rt; /* 基准电压测定 */ // 由于芯片原因不支持,使用初始默认值3.3V switch (AdcNum) { case MCU_ADC0: if (MCU_ADC0_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC0_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC0_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC0_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC1: if (MCU_ADC1_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC1_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC1_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC1_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC2: if (MCU_ADC2_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC2_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC2_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC2_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC3: if (MCU_ADC3_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC3_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC3_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC3_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC4: if (MCU_ADC4_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC4_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC4_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC4_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC5: if (MCU_ADC5_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC5_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC5_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC5_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC6: if (MCU_ADC6_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC6_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC6_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC6_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC7: if (MCU_ADC7_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC7_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC7_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC7_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC8: if (MCU_ADC8_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC8_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC8_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC8_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC9: if (MCU_ADC9_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC9_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC9_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC9_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC10: if (MCU_ADC10_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC10_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC10_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC10_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC11: if (MCU_ADC11_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC11_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC11_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC11_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC12: if (MCU_ADC12_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC12_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC12_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC12_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC13: if (MCU_ADC13_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC13_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC13_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC13_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC14: if (MCU_ADC14_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC14_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC14_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC14_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } case MCU_ADC15: if (MCU_ADC15_TO_PHYADC != 0) { sConfig.Channel = MCU_ADC14_CHANNEL; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_55CYCLES_5; if (MCU_ADC15_TO_PHYADC == 1) { if (HAL_ADC_ConfigChannel(&gAdcHandle1, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle1, AdcValue); if (rt < 0) { return -1; } } else if (MCU_ADC15_TO_PHYADC == 2) { if (HAL_ADC_ConfigChannel(&gAdcHandle2, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle2, AdcValue); if (rt < 0) { return -1; } } else { if (HAL_ADC_ConfigChannel(&gAdcHandle3, &sConfig) != HAL_OK) { return -1; } rt = McuBspAdcHandleData(&gAdcHandle3, AdcValue); if (rt < 0) { return -1; } } break; } else { return -1; } default: return -1; } return 0; } void McuBspAdcSleep(void) { /* 由于ADC为模拟输入,本身的功耗就过低,因此不重新对GPIO口进行配置 */ if (gAdcInitFinishFlag == MCU_BSP_ADC_ENABLE) { __HAL_RCC_ADC1_CLK_DISABLE(); __HAL_RCC_ADC2_CLK_DISABLE(); __HAL_RCC_ADC3_CLK_DISABLE(); } } void McuBspAdcWakeUp(void) { /* 由于ADC为模拟输入,本身的功耗就过低,因此不重新对GPIO口进行配置 */ if (gAdcInitFinishFlag == MCU_BSP_ADC_ENABLE) { __HAL_RCC_ADC1_CLK_ENABLE(); __HAL_RCC_ADC2_CLK_ENABLE(); __HAL_RCC_ADC3_CLK_ENABLE(); } } /* 初始化过程中调用的底层功能函数 */ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) { GPIO_InitTypeDef GPIO_InitStruct; RCC_PeriphCLKInitTypeDef PeriphClkInit; PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit); if (hadc->Instance == ADC1) { __HAL_RCC_ADC1_CLK_ENABLE(); /* ADC0 */ if (MCU_ADC0_TO_PHYADC == 1) { MCU_ADC0_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC0_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC0_GPIO, &GPIO_InitStruct); } /* ADC1 */ if (MCU_ADC1_TO_PHYADC == 1) { MCU_ADC1_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC1_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC1_GPIO, &GPIO_InitStruct); } /* ADC2 */ if (MCU_ADC2_TO_PHYADC == 1) { MCU_ADC2_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC2_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC2_GPIO, &GPIO_InitStruct); } /* ADC3 */ if (MCU_ADC3_TO_PHYADC == 1) { MCU_ADC3_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC3_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC3_GPIO, &GPIO_InitStruct); } /* ADC4 */ if (MCU_ADC4_TO_PHYADC == 1) { MCU_ADC4_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC4_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC4_GPIO, &GPIO_InitStruct); } /* ADC5 */ if (MCU_ADC5_TO_PHYADC == 1) { MCU_ADC5_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC5_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC5_GPIO, &GPIO_InitStruct); } /* ADC6 */ if (MCU_ADC6_TO_PHYADC == 1) { MCU_ADC6_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC6_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC6_GPIO, &GPIO_InitStruct); } /* ADC7 */ if (MCU_ADC7_TO_PHYADC == 1) { MCU_ADC7_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC7_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC7_GPIO, &GPIO_InitStruct); } /* ADC8 */ if (MCU_ADC8_TO_PHYADC == 1) { MCU_ADC8_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC8_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC8_GPIO, &GPIO_InitStruct); } /* ADC9 */ if (MCU_ADC9_TO_PHYADC == 1) { MCU_ADC9_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC9_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC9_GPIO, &GPIO_InitStruct); } /* ADC10 */ if (MCU_ADC10_TO_PHYADC == 1) { MCU_ADC10_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC10_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC10_GPIO, &GPIO_InitStruct); } /* ADC11 */ if (MCU_ADC11_TO_PHYADC == 1) { MCU_ADC11_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC11_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC11_GPIO, &GPIO_InitStruct); } /* ADC12 */ if (MCU_ADC12_TO_PHYADC == 1) { MCU_ADC12_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC12_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC12_GPIO, &GPIO_InitStruct); } /* ADC13 */ if (MCU_ADC13_TO_PHYADC == 1) { MCU_ADC13_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC13_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC13_GPIO, &GPIO_InitStruct); } /* ADC14 */ if (MCU_ADC14_TO_PHYADC == 1) { MCU_ADC14_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC14_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC14_GPIO, &GPIO_InitStruct); } /* ADC15 */ if (MCU_ADC15_TO_PHYADC == 1) { MCU_ADC15_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC15_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC15_GPIO, &GPIO_InitStruct); } } else if (hadc->Instance == ADC2) { __HAL_RCC_ADC2_CLK_ENABLE(); /* ADC0 */ if (MCU_ADC0_TO_PHYADC == 2) { MCU_ADC0_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC0_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC0_GPIO, &GPIO_InitStruct); } /* ADC1 */ if (MCU_ADC1_TO_PHYADC == 2) { MCU_ADC1_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC1_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC1_GPIO, &GPIO_InitStruct); } /* ADC2 */ if (MCU_ADC2_TO_PHYADC == 2) { MCU_ADC2_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC2_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC2_GPIO, &GPIO_InitStruct); } /* ADC3 */ if (MCU_ADC3_TO_PHYADC == 2) { MCU_ADC3_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC3_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC3_GPIO, &GPIO_InitStruct); } /* ADC4 */ if (MCU_ADC4_TO_PHYADC == 2) { MCU_ADC4_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC4_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC4_GPIO, &GPIO_InitStruct); } /* ADC5 */ if (MCU_ADC5_TO_PHYADC == 2) { MCU_ADC5_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC5_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC5_GPIO, &GPIO_InitStruct); } /* ADC6 */ if (MCU_ADC6_TO_PHYADC == 2) { MCU_ADC6_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC6_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC6_GPIO, &GPIO_InitStruct); } /* ADC7 */ if (MCU_ADC7_TO_PHYADC == 2) { MCU_ADC7_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC7_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC7_GPIO, &GPIO_InitStruct); } /* ADC8 */ if (MCU_ADC8_TO_PHYADC == 2) { MCU_ADC8_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC8_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC8_GPIO, &GPIO_InitStruct); } /* ADC9 */ if (MCU_ADC9_TO_PHYADC == 2) { MCU_ADC9_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC9_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC9_GPIO, &GPIO_InitStruct); } /* ADC10 */ if (MCU_ADC10_TO_PHYADC == 2) { MCU_ADC10_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC10_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC10_GPIO, &GPIO_InitStruct); } /* ADC11 */ if (MCU_ADC11_TO_PHYADC == 2) { MCU_ADC11_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC11_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC11_GPIO, &GPIO_InitStruct); } /* ADC12 */ if (MCU_ADC12_TO_PHYADC == 2) { MCU_ADC12_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC12_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC12_GPIO, &GPIO_InitStruct); } /* ADC13 */ if (MCU_ADC13_TO_PHYADC == 2) { MCU_ADC13_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC13_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC13_GPIO, &GPIO_InitStruct); } /* ADC14 */ if (MCU_ADC14_TO_PHYADC == 2) { MCU_ADC14_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC14_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC14_GPIO, &GPIO_InitStruct); } /* ADC15 */ if (MCU_ADC15_TO_PHYADC == 2) { MCU_ADC15_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC15_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC15_GPIO, &GPIO_InitStruct); } } else if (hadc->Instance == ADC3) { __HAL_RCC_ADC3_CLK_ENABLE(); /* ADC0 */ if (MCU_ADC0_TO_PHYADC == 3) { MCU_ADC0_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC0_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC0_GPIO, &GPIO_InitStruct); } /* ADC1 */ if (MCU_ADC1_TO_PHYADC == 3) { MCU_ADC1_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC1_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC1_GPIO, &GPIO_InitStruct); } /* ADC2 */ if (MCU_ADC2_TO_PHYADC == 3) { MCU_ADC2_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC2_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC2_GPIO, &GPIO_InitStruct); } /* ADC3 */ if (MCU_ADC3_TO_PHYADC == 3) { MCU_ADC3_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC3_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC3_GPIO, &GPIO_InitStruct); } /* ADC4 */ if (MCU_ADC4_TO_PHYADC == 3) { MCU_ADC4_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC4_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC4_GPIO, &GPIO_InitStruct); } /* ADC5 */ if (MCU_ADC5_TO_PHYADC == 3) { MCU_ADC5_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC5_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC5_GPIO, &GPIO_InitStruct); } /* ADC6 */ if (MCU_ADC6_TO_PHYADC == 3) { MCU_ADC6_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC6_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC6_GPIO, &GPIO_InitStruct); } /* ADC7 */ if (MCU_ADC7_TO_PHYADC == 3) { MCU_ADC7_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC7_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC7_GPIO, &GPIO_InitStruct); } /* ADC8 */ if (MCU_ADC8_TO_PHYADC == 3) { MCU_ADC8_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC8_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC8_GPIO, &GPIO_InitStruct); } /* ADC9 */ if (MCU_ADC9_TO_PHYADC == 3) { MCU_ADC9_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC9_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC9_GPIO, &GPIO_InitStruct); } /* ADC10 */ if (MCU_ADC10_TO_PHYADC == 3) { MCU_ADC10_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC10_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC10_GPIO, &GPIO_InitStruct); } /* ADC11 */ if (MCU_ADC11_TO_PHYADC == 3) { MCU_ADC11_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC11_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC11_GPIO, &GPIO_InitStruct); } /* ADC12 */ if (MCU_ADC12_TO_PHYADC == 3) { MCU_ADC12_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC12_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC12_GPIO, &GPIO_InitStruct); } /* ADC13 */ if (MCU_ADC13_TO_PHYADC == 3) { MCU_ADC13_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC13_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC13_GPIO, &GPIO_InitStruct); } /* ADC14 */ if (MCU_ADC14_TO_PHYADC == 3) { MCU_ADC14_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC14_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC14_GPIO, &GPIO_InitStruct); } /* ADC15 */ if (MCU_ADC15_TO_PHYADC == 3) { MCU_ADC15_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = MCU_ADC15_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(MCU_ADC15_GPIO, &GPIO_InitStruct); } } } /* 反初始化过程中调用的底层功能函数 */ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) { if (hadc->Instance == ADC1) { __HAL_RCC_ADC1_FORCE_RESET(); __HAL_RCC_ADC1_RELEASE_RESET(); __HAL_RCC_ADC1_CLK_DISABLE(); /* ADC0 */ if (MCU_ADC0_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC0_GPIO, MCU_ADC0_GPIO_PIN); } /* ADC1 */ if (MCU_ADC1_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC1_GPIO, MCU_ADC1_GPIO_PIN); } /* ADC2 */ if (MCU_ADC2_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC2_GPIO, MCU_ADC2_GPIO_PIN); } /* ADC3 */ if (MCU_ADC3_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC3_GPIO, MCU_ADC3_GPIO_PIN); } /* ADC4 */ if (MCU_ADC4_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC4_GPIO, MCU_ADC4_GPIO_PIN); } /* ADC5 */ if (MCU_ADC5_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC5_GPIO, MCU_ADC5_GPIO_PIN); } /* ADC6 */ if (MCU_ADC6_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC6_GPIO, MCU_ADC6_GPIO_PIN); } /* ADC7 */ if (MCU_ADC7_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC7_GPIO, MCU_ADC7_GPIO_PIN); } /* ADC8 */ if (MCU_ADC8_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC8_GPIO, MCU_ADC8_GPIO_PIN); } /* ADC9 */ if (MCU_ADC9_TO_PHYADC == 1) { HAL_GPIO_DeInit(MCU_ADC9_GPIO, MCU_ADC9_GPIO_PIN); } } else if (hadc->Instance == ADC2) { __HAL_RCC_ADC2_FORCE_RESET(); __HAL_RCC_ADC2_RELEASE_RESET(); __HAL_RCC_ADC2_CLK_DISABLE(); /* ADC0 */ if (MCU_ADC0_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC0_GPIO, MCU_ADC0_GPIO_PIN); } /* ADC1 */ if (MCU_ADC1_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC1_GPIO, MCU_ADC1_GPIO_PIN); } /* ADC2 */ if (MCU_ADC2_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC2_GPIO, MCU_ADC2_GPIO_PIN); } /* ADC3 */ if (MCU_ADC3_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC3_GPIO, MCU_ADC3_GPIO_PIN); } /* ADC4 */ if (MCU_ADC4_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC4_GPIO, MCU_ADC4_GPIO_PIN); } /* ADC5 */ if (MCU_ADC5_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC5_GPIO, MCU_ADC5_GPIO_PIN); } /* ADC6 */ if (MCU_ADC6_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC6_GPIO, MCU_ADC6_GPIO_PIN); } /* ADC7 */ if (MCU_ADC7_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC7_GPIO, MCU_ADC7_GPIO_PIN); } /* ADC8 */ if (MCU_ADC8_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC8_GPIO, MCU_ADC8_GPIO_PIN); } /* ADC9 */ if (MCU_ADC9_TO_PHYADC == 2) { HAL_GPIO_DeInit(MCU_ADC9_GPIO, MCU_ADC9_GPIO_PIN); } } else if (hadc->Instance == ADC3) { __HAL_RCC_ADC3_FORCE_RESET(); __HAL_RCC_ADC3_RELEASE_RESET(); __HAL_RCC_ADC3_CLK_DISABLE(); /* ADC0 */ if (MCU_ADC0_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC0_GPIO, MCU_ADC0_GPIO_PIN); } /* ADC1 */ if (MCU_ADC1_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC1_GPIO, MCU_ADC1_GPIO_PIN); } /* ADC2 */ if (MCU_ADC2_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC2_GPIO, MCU_ADC2_GPIO_PIN); } /* ADC3 */ if (MCU_ADC3_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC3_GPIO, MCU_ADC3_GPIO_PIN); } /* ADC4 */ if (MCU_ADC4_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC4_GPIO, MCU_ADC4_GPIO_PIN); } /* ADC5 */ if (MCU_ADC5_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC5_GPIO, MCU_ADC5_GPIO_PIN); } /* ADC6 */ if (MCU_ADC6_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC6_GPIO, MCU_ADC6_GPIO_PIN); } /* ADC7 */ if (MCU_ADC7_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC7_GPIO, MCU_ADC7_GPIO_PIN); } /* ADC8 */ if (MCU_ADC8_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC8_GPIO, MCU_ADC8_GPIO_PIN); } /* ADC9 */ if (MCU_ADC9_TO_PHYADC == 3) { HAL_GPIO_DeInit(MCU_ADC9_GPIO, MCU_ADC9_GPIO_PIN); } } } /* 取20组数据,去掉最大最小值取平均值 */ static int McuBspAdcHandleData(ADC_HandleTypeDef *hadc, float *Value) { unsigned long long AdValue = 0; char i; char j = 0; unsigned int max = gAdcValue[0]; unsigned int min = gAdcValue[0]; /* 取20个 */ for (i = 0; i < 20; ) { HAL_ADC_Start(hadc); HAL_ADC_PollForConversion(hadc, 50); // 等待转换完成,第二个参数表示超时时间,单位ms if(HAL_IS_BIT_SET(HAL_ADC_GetState(hadc), HAL_ADC_STATE_REG_EOC)) { gAdcValue[i] = HAL_ADC_GetValue(hadc); AdValue += gAdcValue[i]; i++; } else { j++; if (j > 100) { return -1; } } } HAL_ADC_Stop(hadc); max = gAdcValue[0]; min = gAdcValue[0]; for(i=0; i < 20; i++) { //取最大值、最小值 max = (gAdcValue[i] < max) ? max : gAdcValue[i]; min = (min < gAdcValue[i]) ? min : gAdcValue[i]; } *Value = ((AdValue - max - min) / 18.0f) * gMcuBspAdcStdV / 4096 ; return 0; }