和单路没有特别的区别,
先配置成多通道,定一个数组, 存进去就得了,注意他们是按顺序存就行。
下面是我以前做的一个用的是 070,开了6路ADC
- static void MX_ADC_Init(void)
- {
-
-
-
-
-
- ADC_ChannelConfTypeDef sConfig = {0};
-
-
-
-
- /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
- */
- hadc.Instance = ADC1;
-
- hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
- hadc.Init.Resolution = ADC_RESOLUTION_12B;
- hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
- hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;
-
- hadc.Init.EOCSelection = ADC_EOC_SEQ_CONV;
- hadc.Init.LowPowerAutoWait = DISABLE;
- hadc.Init.LowPowerAutoPowerOff = DISABLE;
- hadc.Init.ContinuousConvMode = ENABLE;
- hadc.Init.DiscontinuousConvMode = DISABLE;
- hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;
- hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
- hadc.Init.DMAContinuousRequests = ENABLE;
- hadc.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
- if (HAL_ADC_Init(&hadc) != HAL_OK)
- {
- Error_Handler();
- }
-
-
- if (HAL_ADCEx_Calibration_Start(&hadc) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel to be converted.
- */
- sConfig.Channel = ADC_CHANNEL_0;
- sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
-
- sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
- if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel to be converted.
- */
- sConfig.Channel = ADC_CHANNEL_1;
- if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel to be converted.
- */
- sConfig.Channel = ADC_CHANNEL_2;
- if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel to be converted.
- */
- sConfig.Channel = ADC_CHANNEL_3;
- if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel to be converted.
- */
- sConfig.Channel = ADC_CHANNEL_4;
- if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /** Configure for the selected ADC regular channel to be converted.
- */
- sConfig.Channel = ADC_CHANNEL_5;
- if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
- {
- Error_Handler();
- }
-
-
-
-
- }
主程序定义了一个数组,采集96个主要是为了滤波用的,相当于6路各有16个数据存在里面。
- if (HAL_ADC_Start_DMA(&hadc,(uint32_t *)aADCxConvertedValues, 96) != HAL_OK)
- {
- Error_Handler();
- }
|