123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627 |
- /* USER CODE BEGIN Header */
- /**
- ******************************************************************************
- * @file adc.c
- * @brief This file provides code for the configuration
- * of the ADC instances.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2022 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
- /* USER CODE END Header */
- /* Includes ------------------------------------------------------------------*/
- #include "adc.h"
- /* USER CODE BEGIN 0 */
- uint32_t ADC1_Buf[(ADC1_CHANEL_COUNT*ADC1_SAMPLE_COUNT)], ADC1_Value[ADC1_CHANEL_COUNT];
- uint32_t ADC2_Buf[(ADC2_CHANEL_COUNT*ADC2_SAMPLE_COUNT)], ADC2_Value[ADC2_CHANEL_COUNT];
- uint32_t ADC3_Buf[(ADC3_CHANEL_COUNT*ADC3_SAMPLE_COUNT)], ADC3_Value[ADC3_CHANEL_COUNT];
- uint32_t L1_ADC_Each_Value[ADC2_SAMPLE_COUNT];
- uint32_t L2_ADC_Each_Value[ADC2_SAMPLE_COUNT];
- uint32_t L3_ADC_Each_Value[ADC2_SAMPLE_COUNT];
- uint8_t bADC1_Done;
- uint8_t bADC2_Done;
- uint8_t bADC3_Done;
- struct ADC_VALUE adc_value;
- /* USER CODE END 0 */
- ADC_HandleTypeDef hadc1;
- ADC_HandleTypeDef hadc2;
- ADC_HandleTypeDef hadc3;
- DMA_HandleTypeDef hdma_adc1;
- DMA_HandleTypeDef hdma_adc2;
- DMA_HandleTypeDef hdma_adc3;
- /* ADC1 init function */
- void MX_ADC1_Init(void)
- {
- /* USER CODE BEGIN ADC1_Init 0 */
- /* USER CODE END ADC1_Init 0 */
- ADC_ChannelConfTypeDef sConfig = {0};
- /* USER CODE BEGIN ADC1_Init 1 */
- /* USER CODE END ADC1_Init 1 */
- /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
- */
- hadc1.Instance = ADC1;
- hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV6;
- hadc1.Init.Resolution = ADC_RESOLUTION_12B;
- hadc1.Init.ScanConvMode = ENABLE;
- hadc1.Init.ContinuousConvMode = ENABLE;
- hadc1.Init.DiscontinuousConvMode = DISABLE;
- hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
- hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
- hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- hadc1.Init.NbrOfConversion = 9;
- hadc1.Init.DMAContinuousRequests = ENABLE;
- hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
- if (HAL_ADC_Init(&hadc1) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_4;
- sConfig.Rank = 1;
- sConfig.SamplingTime = ADC_SAMPLETIME_84CYCLES;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_5;
- sConfig.Rank = 2;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_6;
- sConfig.Rank = 3;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_7;
- sConfig.Rank = 4;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_9;
- sConfig.Rank = 5;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_11;
- sConfig.Rank = 6;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_12;
- sConfig.Rank = 7;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_13;
- sConfig.Rank = 8;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_0;
- sConfig.Rank = 9;
- if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN ADC1_Init 2 */
- /* USER CODE END ADC1_Init 2 */
- }
- /* ADC2 init function */
- void MX_ADC2_Init(void)
- {
- /* USER CODE BEGIN ADC2_Init 0 */
- /* USER CODE END ADC2_Init 0 */
- ADC_ChannelConfTypeDef sConfig = {0};
- /* USER CODE BEGIN ADC2_Init 1 */
- /* USER CODE END ADC2_Init 1 */
- /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
- */
- hadc2.Instance = ADC2;
- hadc2.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV6;
- hadc2.Init.Resolution = ADC_RESOLUTION_12B;
- hadc2.Init.ScanConvMode = ENABLE;
- hadc2.Init.ContinuousConvMode = ENABLE;
- hadc2.Init.DiscontinuousConvMode = DISABLE;
- hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
- hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START;
- hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- hadc2.Init.NbrOfConversion = 3;
- hadc2.Init.DMAContinuousRequests = ENABLE;
- hadc2.Init.EOCSelection = ADC_EOC_SEQ_CONV;
- if (HAL_ADC_Init(&hadc2) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_14;
- sConfig.Rank = 1;
- sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES;
- if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_15;
- sConfig.Rank = 2;
- if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_8;
- sConfig.Rank = 3;
- if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN ADC2_Init 2 */
- /* USER CODE END ADC2_Init 2 */
- }
- /* ADC3 init function */
- void MX_ADC3_Init(void)
- {
- /* USER CODE BEGIN ADC3_Init 0 */
- /* USER CODE END ADC3_Init 0 */
- ADC_AnalogWDGConfTypeDef AnalogWDGConfig = {0};
- ADC_ChannelConfTypeDef sConfig = {0};
- /* USER CODE BEGIN ADC3_Init 1 */
- /* USER CODE END ADC3_Init 1 */
- /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
- */
- hadc3.Instance = ADC3;
- hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV6;
- hadc3.Init.Resolution = ADC_RESOLUTION_12B;
- hadc3.Init.ScanConvMode = ENABLE;
- hadc3.Init.ContinuousConvMode = ENABLE;
- hadc3.Init.DiscontinuousConvMode = DISABLE;
- hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
- hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
- hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- hadc3.Init.NbrOfConversion = 3;
- hadc3.Init.DMAContinuousRequests = ENABLE;
- hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
- if (HAL_ADC_Init(&hadc3) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure the analog watchdog
- */
- AnalogWDGConfig.WatchdogMode = ADC_ANALOGWATCHDOG_SINGLE_REG;
- AnalogWDGConfig.HighThreshold = 0;
- AnalogWDGConfig.LowThreshold = 0;
- AnalogWDGConfig.Channel = ADC_CHANNEL_4;
- AnalogWDGConfig.ITMode = DISABLE;
- if (HAL_ADC_AnalogWDGConfig(&hadc3, &AnalogWDGConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_4;
- sConfig.Rank = 1;
- sConfig.SamplingTime = ADC_SAMPLETIME_84CYCLES;
- if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_5;
- sConfig.Rank = 2;
- if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
- */
- sConfig.Channel = ADC_CHANNEL_8;
- sConfig.Rank = 3;
- if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN ADC3_Init 2 */
- /* USER CODE END ADC3_Init 2 */
- }
- void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
- {
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(adcHandle->Instance==ADC1)
- {
- /* USER CODE BEGIN ADC1_MspInit 0 */
- /* USER CODE END ADC1_MspInit 0 */
- /* ADC1 clock enable */
- __HAL_RCC_ADC1_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOA_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- /**ADC1 GPIO Configuration
- PC1 ------> ADC1_IN11
- PC2 ------> ADC1_IN12
- PC3 ------> ADC1_IN13
- PA0/WKUP ------> ADC1_IN0
- PA4 ------> ADC1_IN4
- PA5 ------> ADC1_IN5
- PA6 ------> ADC1_IN6
- PA7 ------> ADC1_IN7
- PB1 ------> ADC1_IN9
- */
- GPIO_InitStruct.Pin = SMR3_Relay_Voltage_Pin|SMR4_Relay_Voltage_Pin|SMR5_Relay_Voltage_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- GPIO_InitStruct.Pin = SMR6_Relay_Voltage_Pin|SMR1_Relay_Voltage_Pin|SMR1_Current_Pin|SMR2_Relay_Voltage_Pin
- |SMR2_Current_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- GPIO_InitStruct.Pin = Vref_165_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(Vref_165_GPIO_Port, &GPIO_InitStruct);
- /* ADC1 DMA Init */
- /* ADC1 Init */
- hdma_adc1.Instance = DMA2_Stream0;
- hdma_adc1.Init.Channel = DMA_CHANNEL_0;
- hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
- hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- hdma_adc1.Init.Mode = DMA_CIRCULAR;
- hdma_adc1.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_adc1.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
- {
- Error_Handler();
- }
- __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);
- /* ADC1 interrupt Init */
- HAL_NVIC_SetPriority(ADC_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(ADC_IRQn);
- /* USER CODE BEGIN ADC1_MspInit 1 */
- /* USER CODE END ADC1_MspInit 1 */
- }
- else if(adcHandle->Instance==ADC2)
- {
- /* USER CODE BEGIN ADC2_MspInit 0 */
- /* USER CODE END ADC2_MspInit 0 */
- /* ADC2 clock enable */
- __HAL_RCC_ADC2_CLK_ENABLE();
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_GPIOB_CLK_ENABLE();
- /**ADC2 GPIO Configuration
- PC4 ------> ADC2_IN14
- PC5 ------> ADC2_IN15
- PB0 ------> ADC2_IN8
- */
- GPIO_InitStruct.Pin = AC_Input_L1_Pin|AC_Input_L2_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- GPIO_InitStruct.Pin = AC_Input_L3_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(AC_Input_L3_GPIO_Port, &GPIO_InitStruct);
- /* ADC2 DMA Init */
- /* ADC2 Init */
- hdma_adc2.Instance = DMA2_Stream2;
- hdma_adc2.Init.Channel = DMA_CHANNEL_1;
- hdma_adc2.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_adc2.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_adc2.Init.MemInc = DMA_MINC_ENABLE;
- hdma_adc2.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- hdma_adc2.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- hdma_adc2.Init.Mode = DMA_CIRCULAR;
- hdma_adc2.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_adc2.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- if (HAL_DMA_Init(&hdma_adc2) != HAL_OK)
- {
- Error_Handler();
- }
- __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc2);
- /* ADC2 interrupt Init */
- HAL_NVIC_SetPriority(ADC_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(ADC_IRQn);
- /* USER CODE BEGIN ADC2_MspInit 1 */
- /* USER CODE END ADC2_MspInit 1 */
- }
- else if(adcHandle->Instance==ADC3)
- {
- /* USER CODE BEGIN ADC3_MspInit 0 */
- /* USER CODE END ADC3_MspInit 0 */
- /* ADC3 clock enable */
- __HAL_RCC_ADC3_CLK_ENABLE();
- __HAL_RCC_GPIOF_CLK_ENABLE();
- /**ADC3 GPIO Configuration
- PF6 ------> ADC3_IN4
- PF7 ------> ADC3_IN5
- PF10 ------> ADC3_IN8
- */
- GPIO_InitStruct.Pin = SMR1_Gfd_Sense_Pin|SMR2_Gfd_Sense_Pin|DC_In_Pin;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
- /* ADC3 DMA Init */
- /* ADC3 Init */
- hdma_adc3.Instance = DMA2_Stream1;
- hdma_adc3.Init.Channel = DMA_CHANNEL_2;
- hdma_adc3.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_adc3.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_adc3.Init.MemInc = DMA_MINC_ENABLE;
- hdma_adc3.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- hdma_adc3.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- hdma_adc3.Init.Mode = DMA_CIRCULAR;
- hdma_adc3.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_adc3.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- if (HAL_DMA_Init(&hdma_adc3) != HAL_OK)
- {
- Error_Handler();
- }
- __HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc3);
- /* ADC3 interrupt Init */
- HAL_NVIC_SetPriority(ADC_IRQn, 5, 0);
- HAL_NVIC_EnableIRQ(ADC_IRQn);
- /* USER CODE BEGIN ADC3_MspInit 1 */
- /* USER CODE END ADC3_MspInit 1 */
- }
- }
- void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
- {
- if(adcHandle->Instance==ADC1)
- {
- /* USER CODE BEGIN ADC1_MspDeInit 0 */
- /* USER CODE END ADC1_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_ADC1_CLK_DISABLE();
- /**ADC1 GPIO Configuration
- PC1 ------> ADC1_IN11
- PC2 ------> ADC1_IN12
- PC3 ------> ADC1_IN13
- PA0/WKUP ------> ADC1_IN0
- PA4 ------> ADC1_IN4
- PA5 ------> ADC1_IN5
- PA6 ------> ADC1_IN6
- PA7 ------> ADC1_IN7
- PB1 ------> ADC1_IN9
- */
- HAL_GPIO_DeInit(GPIOC, SMR3_Relay_Voltage_Pin|SMR4_Relay_Voltage_Pin|SMR5_Relay_Voltage_Pin);
- HAL_GPIO_DeInit(GPIOA, SMR6_Relay_Voltage_Pin|SMR1_Relay_Voltage_Pin|SMR1_Current_Pin|SMR2_Relay_Voltage_Pin
- |SMR2_Current_Pin);
- HAL_GPIO_DeInit(Vref_165_GPIO_Port, Vref_165_Pin);
- /* ADC1 DMA DeInit */
- HAL_DMA_DeInit(adcHandle->DMA_Handle);
- /* ADC1 interrupt Deinit */
- /* USER CODE BEGIN ADC1:ADC_IRQn disable */
- /**
- * Uncomment the line below to disable the "ADC_IRQn" interrupt
- * Be aware, disabling shared interrupt may affect other IPs
- */
- /* HAL_NVIC_DisableIRQ(ADC_IRQn); */
- /* USER CODE END ADC1:ADC_IRQn disable */
- /* USER CODE BEGIN ADC1_MspDeInit 1 */
- /* USER CODE END ADC1_MspDeInit 1 */
- }
- else if(adcHandle->Instance==ADC2)
- {
- /* USER CODE BEGIN ADC2_MspDeInit 0 */
- /* USER CODE END ADC2_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_ADC2_CLK_DISABLE();
- /**ADC2 GPIO Configuration
- PC4 ------> ADC2_IN14
- PC5 ------> ADC2_IN15
- PB0 ------> ADC2_IN8
- */
- HAL_GPIO_DeInit(GPIOC, AC_Input_L1_Pin|AC_Input_L2_Pin);
- HAL_GPIO_DeInit(AC_Input_L3_GPIO_Port, AC_Input_L3_Pin);
- /* ADC2 DMA DeInit */
- HAL_DMA_DeInit(adcHandle->DMA_Handle);
- /* ADC2 interrupt Deinit */
- /* USER CODE BEGIN ADC2:ADC_IRQn disable */
- /**
- * Uncomment the line below to disable the "ADC_IRQn" interrupt
- * Be aware, disabling shared interrupt may affect other IPs
- */
- /* HAL_NVIC_DisableIRQ(ADC_IRQn); */
- /* USER CODE END ADC2:ADC_IRQn disable */
- /* USER CODE BEGIN ADC2_MspDeInit 1 */
- /* USER CODE END ADC2_MspDeInit 1 */
- }
- else if(adcHandle->Instance==ADC3)
- {
- /* USER CODE BEGIN ADC3_MspDeInit 0 */
- /* USER CODE END ADC3_MspDeInit 0 */
- /* Peripheral clock disable */
- __HAL_RCC_ADC3_CLK_DISABLE();
- /**ADC3 GPIO Configuration
- PF6 ------> ADC3_IN4
- PF7 ------> ADC3_IN5
- PF10 ------> ADC3_IN8
- */
- HAL_GPIO_DeInit(GPIOF, SMR1_Gfd_Sense_Pin|SMR2_Gfd_Sense_Pin|DC_In_Pin);
- /* ADC3 DMA DeInit */
- HAL_DMA_DeInit(adcHandle->DMA_Handle);
- /* ADC3 interrupt Deinit */
- /* USER CODE BEGIN ADC3:ADC_IRQn disable */
- /**
- * Uncomment the line below to disable the "ADC_IRQn" interrupt
- * Be aware, disabling shared interrupt may affect other IPs
- */
- /* HAL_NVIC_DisableIRQ(ADC_IRQn); */
- /* USER CODE END ADC3:ADC_IRQn disable */
- /* USER CODE BEGIN ADC3_MspDeInit 1 */
- /* USER CODE END ADC3_MspDeInit 1 */
- }
- }
- /* USER CODE BEGIN 1 */
- void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle)
- {
- if(AdcHandle->Instance==ADC1)
- {
- bADC1_Done = ON;
- HAL_ADC_Stop_DMA(&hadc1);
- }
- if(AdcHandle->Instance==ADC2)
- {
- bADC2_Done = ON;
- HAL_ADC_Stop_DMA(&hadc2);
- }
- if(AdcHandle->Instance==ADC3)
- {
- bADC3_Done = ON;
- HAL_ADC_Stop_DMA(&hadc3);
- }
- }
- uint8_t adc_filter_move_avg(ADC_MOVE_AVG_FILTER *data, uint32_t value)
- {
- uint8_t result = FAIL;
- uint32_t buf = 0;
-
- data->buffer[data->idx_put] = value;
- if(++data->idx_put>=LIMIT_MOVE_FILTER)data->idx_put=0;
-
- for(int idx=0;idx<LIMIT_MOVE_FILTER;idx++)
- {
- buf += data->buffer[idx];
- }
- data->value = buf/LIMIT_MOVE_FILTER;
-
- return result;
- }
- /* USER CODE END 1 */
|