1243 lines
47 KiB
C
1243 lines
47 KiB
C
|
|
#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;
|
|||
|
|
}
|