Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
AnalogInDma.cpp
00001 #include "AnalogInDma.h" 00002 00003 00004 AnalogInDma::AnalogInDma() 00005 { 00006 } 00007 AnalogInDma::~AnalogInDma() 00008 { 00009 00010 } 00011 bool AnalogInDma::init() 00012 { 00013 MX_DMA_Init(); 00014 if(!MX_ADC1_Init()) 00015 return false; 00016 return true; 00017 } 00018 00019 bool AnalogInDma::start(uint32_t* pData, uint32_t Length) 00020 { 00021 if (HAL_ADC_Start_DMA(&hadc1, pData, Length) != HAL_OK) 00022 return false; 00023 return true; 00024 } 00025 00026 /* ADC1 init function */ 00027 bool AnalogInDma::MX_ADC1_Init() 00028 { 00029 ADC_MultiModeTypeDef multimode; 00030 ADC_ChannelConfTypeDef sConfig; 00031 00032 /**Common config 00033 */ 00034 hadc1.Instance = ADC1; 00035 hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1; 00036 hadc1.Init.Resolution = ADC_RESOLUTION_12B; 00037 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; 00038 hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; 00039 hadc1.Init.EOCSelection = ADC_EOC_SEQ_CONV; 00040 hadc1.Init.LowPowerAutoWait = DISABLE; 00041 hadc1.Init.ContinuousConvMode = ENABLE; 00042 hadc1.Init.NbrOfConversion = 4; 00043 hadc1.Init.DiscontinuousConvMode = DISABLE; 00044 hadc1.Init.NbrOfDiscConversion = 1; 00045 hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; 00046 hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; 00047 hadc1.Init.DMAContinuousRequests = ENABLE; 00048 hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED; 00049 hadc1.Init.OversamplingMode = DISABLE; 00050 if (HAL_ADC_Init(&hadc1) != HAL_OK) 00051 return false; 00052 00053 /**Configure the ADC multi-mode 00054 */ 00055 multimode.Mode = ADC_MODE_INDEPENDENT; 00056 if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK) 00057 return false; 00058 00059 /**Configure Regular Channel 00060 */ 00061 sConfig.Channel = ADC_CHANNEL_5; 00062 sConfig.Rank = 1; 00063 sConfig.SamplingTime = ADC_SAMPLETIME_247CYCLES_5; 00064 sConfig.SingleDiff = ADC_SINGLE_ENDED; 00065 sConfig.OffsetNumber = ADC_OFFSET_NONE; 00066 sConfig.Offset = 0; 00067 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) 00068 return false; 00069 00070 /**Configure Regular Channel 00071 */ 00072 sConfig.Channel = ADC_CHANNEL_6; 00073 sConfig.Rank = 2; 00074 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) 00075 return false; 00076 00077 /**Configure Regular Channel 00078 */ 00079 sConfig.Channel = ADC_CHANNEL_9; 00080 sConfig.Rank = 3; 00081 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) 00082 return false; 00083 /**Configure Regular Channel 00084 */ 00085 sConfig.Channel = ADC_CHANNEL_15; 00086 sConfig.Rank = 4; 00087 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) 00088 return false; 00089 return true; 00090 } 00091 00092 /** 00093 * Enable DMA controller clock 00094 */ 00095 void AnalogInDma::MX_DMA_Init() 00096 { 00097 /* DMA controller clock enable */ 00098 __HAL_RCC_DMA1_CLK_ENABLE(); 00099 00100 /* DMA interrupt init */ 00101 /* DMA1_Channel1_IRQn interrupt configuration */ 00102 HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); 00103 HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); 00104 }
Generated on Sat Aug 13 2022 13:32:45 by
1.7.2