Quantcast
Channel: Recent Questions - Stack Overflow
Viewing all articles
Browse latest Browse all 12111

STM32 - My code doesn't work when i add the line HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adcBuffer, 2);

$
0
0

i am very new to stm32 and i am trying to use ADC module in my stm32f103c6 board, here is the code i've been working on:

#include "main.h"ADC_HandleTypeDef hadc1;DMA_HandleTypeDef hdma_adc1;uint32_t adcBuffer[2];uint32_t adcData[2];void SystemClock_Config(void);static void MX_GPIO_Init(void);static void MX_DMA_Init(void);static void MX_ADC1_Init(void);int main(void){  HAL_Init();  SystemClock_Config();  MX_GPIO_Init();  MX_DMA_Init();  MX_ADC1_Init();  HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adcBuffer, 2);  while (1)  {      HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);      HAL_Delay(1000);  }}void SystemClock_Config(void){  RCC_OscInitTypeDef RCC_OscInitStruct = {0};  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};  /** Initializes the RCC Oscillators according to the specified parameters  * in the RCC_OscInitTypeDef structure.  */  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;  RCC_OscInitStruct.HSIState = RCC_HSI_ON;  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL2;  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)  {    Error_Handler();  }  /** Initializes the CPU, AHB and APB buses clocks  */  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)  {    Error_Handler();  }  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV2;  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)  {    Error_Handler();  }}/**  * @brief ADC1 Initialization Function  * @param None  * @retval None  */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 */  /** Common config  */  hadc1.Instance = ADC1;  hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;  hadc1.Init.ContinuousConvMode = ENABLE;  hadc1.Init.DiscontinuousConvMode = DISABLE;  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;  hadc1.Init.NbrOfConversion = 2;  if (HAL_ADC_Init(&hadc1) != HAL_OK)  {    Error_Handler();  }  /** Configure Regular Channel  */  sConfig.Channel = ADC_CHANNEL_8;  sConfig.Rank = ADC_REGULAR_RANK_1;  sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)  {    Error_Handler();  }  /** Configure Regular Channel  */  sConfig.Channel = ADC_CHANNEL_9;  sConfig.Rank = ADC_REGULAR_RANK_2;  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)  {    Error_Handler();  }  /* USER CODE BEGIN ADC1_Init 2 */  /* USER CODE END ADC1_Init 2 */}/**  * Enable DMA controller clock  */static void MX_DMA_Init(void){  /* DMA controller clock enable */  __HAL_RCC_DMA1_CLK_ENABLE();  /* DMA interrupt init */  /* DMA1_Channel1_IRQn interrupt configuration */  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);}/**  * @brief GPIO Initialization Function  * @param None  * @retval None  */static void MX_GPIO_Init(void){  GPIO_InitTypeDef GPIO_InitStruct = {0};/* USER CODE BEGIN MX_GPIO_Init_1 *//* USER CODE END MX_GPIO_Init_1 */  /* GPIO Ports Clock Enable */  __HAL_RCC_GPIOA_CLK_ENABLE();  __HAL_RCC_GPIOB_CLK_ENABLE();  /*Configure GPIO pin Output Level */  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11, GPIO_PIN_RESET);  /*Configure GPIO pins : PA5 PA6 PA7 PA8                           PA9 PA10 PA11 */  GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11;  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  GPIO_InitStruct.Pull = GPIO_NOPULL;  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);/* USER CODE BEGIN MX_GPIO_Init_2 *//* USER CODE END MX_GPIO_Init_2 */}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//**  * @brief  This function is executed in case of error occurrence.  * @retval None  */void Error_Handler(void){  /* USER CODE BEGIN Error_Handler_Debug */  /* User can add his own implementation to report the HAL error return state */  __disable_irq();  while (1)  {  }  /* USER CODE END Error_Handler_Debug */}#ifdef  USE_FULL_ASSERT/**  * @brief  Reports the name of the source file and the source line number  *         where the assert_param error has occurred.  * @param  file: pointer to the source file name  * @param  line: assert_param error line source number  * @retval None  */void assert_failed(uint8_t *file, uint32_t line){  /* USER CODE BEGIN 6 */  /* User can add his own implementation to report the file name and line number,     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  /* USER CODE END 6 */}#endif /* USE_FULL_ASSERT */

My problem is that the LED on pin 5 toggles when i remove the line:

HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adcBuffer, 2);

But when i add the line i see no change in the led connected to that pin? I can provide more information if there is more you need to know in my ide, thanks everyone in advance.


Viewing all articles
Browse latest Browse all 12111

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>