I have an Nucleo STM32F446RE and I'm used to enable DMA Continuous Requests with ADC. But in this case, I can only select disable. Why? If it's not possible to use DMA Continuous Requests with ADC. How can I use my multi-scan ADC?

I can anyway create a DMA Stream and connect it to the ADC inside the DMA tab.

Here is some print screens.

Here I cannot select "Enable" enter image description here

But according to data sheet, I can select Enable enter image description here enter image description here


Should I just change DISBALE to ENABLE here?

static 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_DIV4;
  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  hadc1.Init.ScanConvMode = ENABLE;
  hadc1.Init.ContinuousConvMode = DISABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
  hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T8_TRGO;
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc1.Init.NbrOfConversion = 6;
  hadc1.Init.DMAContinuousRequests = DISABLE; // <---- HERE!? 
  hadc1.Init.EOCSelection = ADC_EOC_SEQ_CONV;
  if (HAL_ADC_Init(&hadc1) != HAL_OK)
  • \$\begingroup\$ If you feel that the silly "cube" wizard mismatches the alleged/advertised hardware capability, that is probably something you will have to pursue with ST in order to find out which is in error. \$\endgroup\$ Sep 23, 2019 at 1:42
  • \$\begingroup\$ Is DMA2 Ch0 already in use or not enabled? \$\endgroup\$
    – Jeroen3
    Sep 23, 2019 at 5:47
  • \$\begingroup\$ The code you show has ContinuousConvMode = DISABLE that doesn't sound right, your screenshot shows it is enabled. \$\endgroup\$
    – Arsenal
    Sep 23, 2019 at 6:52
  • \$\begingroup\$ ADC is one of the peripherals which should be programmed using registers. It would be programmed by you faster quicker than writing this question. Another bonus - you will know what is exactly going on. using HAL you can only guess or waste time going through its source code \$\endgroup\$ Sep 23, 2019 at 7:14
  • \$\begingroup\$ @P__J__ Acorrding to STM. They recommend using CubeMX instead of registrers. \$\endgroup\$
    – euraad
    Sep 23, 2019 at 10:03

1 Answer 1


Vá para a aba DMA Settings adicione ADC1 a DMA. Após será habilitada a opção Enable DMA.

Google translate says:

Go to the DMA Settings tab add ADC1 to DMA. After this the Enable DMA option will be enabled.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.