adc.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file adc.c
  5. * @brief This file provides code for the configuration
  6. * of the ADC instances.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * Copyright (c) 2025 STMicroelectronics.
  11. * All rights reserved.
  12. *
  13. * This software is licensed under terms that can be found in the LICENSE file
  14. * in the root directory of this software component.
  15. * If no LICENSE file comes with this software, it is provided AS-IS.
  16. *
  17. ******************************************************************************
  18. */
  19. /* USER CODE END Header */
  20. /* Includes ------------------------------------------------------------------*/
  21. #include "adc.h"
  22. /* USER CODE BEGIN 0 */
  23. ADC_HandleTypeDef hadctemp;
  24. /* USER CODE END 0 */
  25. ADC_HandleTypeDef hadc1;
  26. /* ADC1 init function */
  27. void MX_ADC1_Init(void)
  28. {
  29. /* USER CODE BEGIN ADC1_Init 0 */
  30. /* USER CODE END ADC1_Init 0 */
  31. ADC_MultiModeTypeDef multimode = {0};
  32. ADC_ChannelConfTypeDef sConfig = {0};
  33. /* USER CODE BEGIN ADC1_Init 1 */
  34. /* USER CODE END ADC1_Init 1 */
  35. /** Common config
  36. */
  37. hadc1.Instance = ADC1;
  38. hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
  39. hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  40. hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  41. hadc1.Init.ContinuousConvMode = DISABLE;
  42. hadc1.Init.DiscontinuousConvMode = DISABLE;
  43. hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  44. hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  45. hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  46. hadc1.Init.NbrOfConversion = 1;
  47. hadc1.Init.DMAContinuousRequests = DISABLE;
  48. hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  49. hadc1.Init.LowPowerAutoWait = DISABLE;
  50. hadc1.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  51. hadctemp.Instance = ADC1;
  52. hadctemp.Init.ScanConvMode = ADC_SCAN_DISABLE;
  53. hadctemp.Init.ContinuousConvMode = DISABLE;
  54. hadctemp.Init.DiscontinuousConvMode = DISABLE;
  55. hadctemp.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  56. hadctemp.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  57. hadctemp.Init.NbrOfConversion = 1;
  58. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  59. {
  60. Error_Handler();
  61. }
  62. if (HAL_ADC_Init(&hadctemp) != HAL_OK)
  63. {
  64. Error_Handler();
  65. }
  66. /** Configure the ADC multi-mode
  67. */
  68. multimode.Mode = ADC_MODE_INDEPENDENT;
  69. if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK)
  70. {
  71. Error_Handler();
  72. }
  73. /** Configure Regular Channel
  74. */
  75. sConfig.Channel = ADC_CHANNEL_1;
  76. sConfig.Rank = ADC_REGULAR_RANK_1;
  77. sConfig.SingleDiff = ADC_SINGLE_ENDED;
  78. sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;
  79. sConfig.OffsetNumber = ADC_OFFSET_NONE;
  80. sConfig.Offset = 0;
  81. if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  82. {
  83. Error_Handler();
  84. }
  85. /* USER CODE BEGIN ADC1_Init 2 */
  86. /* USER CODE END ADC1_Init 2 */
  87. }
  88. void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
  89. {
  90. GPIO_InitTypeDef GPIO_InitStruct = {0};
  91. if(adcHandle->Instance==ADC1)
  92. {
  93. /* USER CODE BEGIN ADC1_MspInit 0 */
  94. /* USER CODE END ADC1_MspInit 0 */
  95. /* ADC1 clock enable */
  96. __HAL_RCC_ADC12_CLK_ENABLE();
  97. __HAL_RCC_GPIOA_CLK_ENABLE();
  98. /**ADC1 GPIO Configuration
  99. PA0 ------> ADC1_IN1
  100. */
  101. GPIO_InitStruct.Pin = GPIO_PIN_0;
  102. GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  103. GPIO_InitStruct.Pull = GPIO_NOPULL;
  104. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  105. /* USER CODE BEGIN ADC1_MspInit 1 */
  106. HAL_NVIC_SetPriority(ADC1_2_IRQn, 0, 0);
  107. HAL_NVIC_EnableIRQ(ADC1_2_IRQn);
  108. HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED);
  109. HAL_ADC_Start_IT(&hadc1);
  110. /* USER CODE END ADC1_MspInit 1 */
  111. }
  112. }
  113. void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
  114. {
  115. if(adcHandle->Instance==ADC1)
  116. {
  117. /* USER CODE BEGIN ADC1_MspDeInit 0 */
  118. /* USER CODE END ADC1_MspDeInit 0 */
  119. /* Peripheral clock disable */
  120. __HAL_RCC_ADC12_CLK_DISABLE();
  121. /**ADC1 GPIO Configuration
  122. PA0 ------> ADC1_IN1
  123. */
  124. HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0);
  125. /* USER CODE BEGIN ADC1_MspDeInit 1 */
  126. /* USER CODE END ADC1_MspDeInit 1 */
  127. }
  128. }
  129. /* USER CODE BEGIN 1 */
  130. /* USER CODE END 1 */