20230731_XiaoFuZi_emb/ZheDaXiaoFuZi/Src/Usr/Bsp/McuBspAdc.c
Rjh913828050 a8560d741e 类型:重构
内容:重新整理项目文件分类
人员:任家豪
2023-10-08 16:10:23 +08:00

1246 lines
47 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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_ADC_Stop(&gAdcHandle1);
HAL_ADC_Stop(&gAdcHandle2);
HAL_ADC_Stop(&gAdcHandle3);
__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;
}