1 | /* ADC1 init function */
|
2 | static void MX_ADC1_Init(void)
|
3 | {
|
4 |
|
5 | ADC_ChannelConfTypeDef sConfig;
|
6 |
|
7 | /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
|
8 | */
|
9 | hadc1.Instance = ADC1;
|
10 | hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
|
11 | hadc1.Init.Resolution = ADC_RESOLUTION_12B;
|
12 | hadc1.Init.ScanConvMode = ENABLE;
|
13 | hadc1.Init.ContinuousConvMode = DISABLE;
|
14 | hadc1.Init.DiscontinuousConvMode = DISABLE;
|
15 | hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
|
16 | hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
17 | hadc1.Init.NbrOfConversion = 3;
|
18 | hadc1.Init.DMAContinuousRequests = DISABLE;
|
19 | hadc1.Init.EOCSelection = ADC_EOC_SEQ_CONV;
|
20 | if (HAL_ADC_Init(&hadc1) != HAL_OK)
|
21 | {
|
22 | Error_Handler();
|
23 | }
|
24 |
|
25 | /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
|
26 | */
|
27 | sConfig.Channel = ADC_CHANNEL_7;
|
28 | sConfig.Rank = 1;
|
29 | sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
|
30 | if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
|
31 | {
|
32 | Error_Handler();
|
33 | }
|
34 |
|
35 | /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
|
36 | */
|
37 | sConfig.Channel = ADC_CHANNEL_10;
|
38 | sConfig.Rank = 2;
|
39 | if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
|
40 | {
|
41 | Error_Handler();
|
42 | }
|
43 |
|
44 | /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
|
45 | */
|
46 | sConfig.Channel = ADC_CHANNEL_9;
|
47 | sConfig.Rank = 3;
|
48 | if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
|
49 | {
|
50 | Error_Handler();
|
51 | }
|
52 |
|
53 | }
|
54 |
|
55 | ...
|
56 |
|
57 | hdma_adc1.Instance = DMA2_Stream0;
|
58 | hdma_adc1.Init.Channel = DMA_CHANNEL_0;
|
59 | hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
|
60 | hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
|
61 | hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
|
62 | hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
|
63 | hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
|
64 | hdma_adc1.Init.Mode = DMA_CIRCULAR;
|
65 | hdma_adc1.Init.Priority = DMA_PRIORITY_MEDIUM;
|
66 | hdma_adc1.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
|
67 | if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
|
68 | {
|
69 | Error_Handler();
|
70 | }
|
71 |
|
72 | __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc1);
|
73 |
|
74 | ...
|
75 |
|
76 | /**
|
77 | * Enable DMA controller clock
|
78 | */
|
79 | static void MX_DMA_Init(void)
|
80 | {
|
81 | /* DMA controller clock enable */
|
82 | __HAL_RCC_DMA1_CLK_ENABLE();
|
83 | __HAL_RCC_DMA2_CLK_ENABLE();
|
84 |
|
85 | /* DMA interrupt init */
|
86 | /* DMA1_Stream5_IRQn interrupt configuration */
|
87 | HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 0, 0);
|
88 | HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn);
|
89 | /* DMA2_Stream0_IRQn interrupt configuration */
|
90 | HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 0, 0);
|
91 | HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
|
92 |
|
93 | }
|