基于MDK項目實例
0.png (48.32 KB, 下載次數(shù): 103)
下載附件
2017-5-21 21:09 上傳
單片機源程序如下:
- #include "adc.h"
- ADC_HandleTypeDef AdcHandle;
- void ADC1_MspInit(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- static DMA_HandleTypeDef hdma_adc;
- __HAL_RCC_GPIOC_CLK_ENABLE();
- __HAL_RCC_ADC1_CLK_ENABLE();
- __HAL_RCC_DMA2_CLK_ENABLE();
- //GPIOC2-5:ADC1-12:15
- GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5;
- GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- hdma_adc.Instance = DMA2_Stream0;
- hdma_adc.Init.Channel = DMA_CHANNEL_0;
- hdma_adc.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_adc.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_adc.Init.MemInc = DMA_MINC_ENABLE;
- hdma_adc.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
- hdma_adc.Init.MemDataAlignment = DMA_PDATAALIGN_HALFWORD;
- hdma_adc.Init.Mode = DMA_CIRCULAR;
- hdma_adc.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_adc.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- hdma_adc.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_HALFFULL;
- hdma_adc.Init.MemBurst = DMA_MBURST_SINGLE;
- hdma_adc.Init.PeriphBurst = DMA_PBURST_SINGLE;
- HAL_DMA_Init(&hdma_adc);
- /* Associate the initialized DMA handle to the the ADC handle */
- __HAL_LINKDMA(&AdcHandle, DMA_Handle, hdma_adc);
- /*##-4- Configure the NVIC for DMA #########################################*/
- /* NVIC configuration for DMA transfer complete interrupt */
- HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
- }
- void ADC1_Init(void)
- {
- AdcHandle.Instance = ADC1;
- AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV2;
- AdcHandle.Init.Resolution = ADC_RESOLUTION_12B;
- AdcHandle.Init.ScanConvMode = ENABLE;
- AdcHandle.Init.ContinuousConvMode = ENABLE;
- AdcHandle.Init.DiscontinuousConvMode = DISABLE;
- AdcHandle.Init.NbrOfDiscConversion = 0;
- AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
- AdcHandle.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T1_CC1;
- AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- AdcHandle.Init.NbrOfConversion = 4;
- AdcHandle.Init.DMAContinuousRequests = ENABLE;
- AdcHandle.Init.EOCSelection = DISABLE;
- ADC1_MspInit();
- if(HAL_ADC_Init(&AdcHandle) != HAL_OK)
- {
- /* Initialization Error */
- while(1);
- }
- }
- void ADC1_Config(void)
- {
- ADC_ChannelConfTypeDef sConfig;
- //channel - 12
- sConfig.Channel = ADC_CHANNEL_12;
- sConfig.Rank = 1;
- sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
- sConfig.Offset = 0;
- HAL_ADC_ConfigChannel(&AdcHandle, &sConfig);
-
- //channel - 13
- sConfig.Channel = ADC_CHANNEL_13;
- sConfig.Rank = 2;
- HAL_ADC_ConfigChannel(&AdcHandle, &sConfig);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
ADC DMA.rar
(4.53 MB, 下載次數(shù): 69)
2017-5-21 18:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|