adc.c 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "hal/adc.h"
  2. static ADC_HandleTypeDef hadc1;
  3. void HAL_ADC1_Init(void){
  4. ADC_InjectionConfTypeDef sConfigInjected = {0};
  5. ADC_ChannelConfTypeDef sConfig = {0};
  6. hadc1.Instance = ADC1;
  7. hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1;
  8. hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  9. hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
  10. hadc1.Init.ContinuousConvMode = DISABLE;
  11. hadc1.Init.DiscontinuousConvMode = DISABLE;
  12. hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  13. hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  14. hadc1.Init.DataAlign = ADC_DATAALIGN_LEFT;
  15. hadc1.Init.NbrOfConversion = 2;
  16. hadc1.Init.DMAContinuousRequests = DISABLE;
  17. hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  18. hadc1.Init.LowPowerAutoWait = DISABLE;
  19. hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
  20. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  21. {
  22. Error_Handler();
  23. }
  24. /** Configure Injected Channel
  25. */
  26. sConfigInjected.InjectedChannel = ADC_CHANNEL_1;
  27. sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1;
  28. sConfigInjected.InjectedSingleDiff = ADC_SINGLE_ENDED;
  29. sConfigInjected.InjectedNbrOfConversion = 3;
  30. sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_7CYCLES_5;
  31. sConfigInjected.ExternalTrigInjecConvEdge = ADC_EXTERNALTRIGINJECCONV_EDGE_RISING;
  32. sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T1_TRGO;
  33. sConfigInjected.AutoInjectedConv = DISABLE;
  34. sConfigInjected.InjectedDiscontinuousConvMode = DISABLE;
  35. sConfigInjected.QueueInjectedContext = ENABLE;
  36. sConfigInjected.InjectedOffset = 0;
  37. sConfigInjected.InjectedOffsetNumber = ADC_OFFSET_NONE;
  38. if (HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected) != HAL_OK)
  39. {
  40. Error_Handler();
  41. }
  42. /** Configure Injected Channel
  43. */
  44. sConfigInjected.InjectedChannel = ADC_CHANNEL_7;
  45. sConfigInjected.InjectedRank = ADC_INJECTED_RANK_2;
  46. if (HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected) != HAL_OK)
  47. {
  48. Error_Handler();
  49. }
  50. /** Configure Injected Channel
  51. */
  52. sConfigInjected.InjectedChannel = ADC_CHANNEL_6;
  53. sConfigInjected.InjectedRank = ADC_INJECTED_RANK_3;
  54. if (HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected) != HAL_OK)
  55. {
  56. Error_Handler();
  57. }
  58. /** Configure Regular Channel
  59. */
  60. sConfig.Channel = ADC_CHANNEL_2;
  61. sConfig.Rank = ADC_REGULAR_RANK_1;
  62. sConfig.SingleDiff = ADC_SINGLE_ENDED;
  63. sConfig.SamplingTime = ADC_SAMPLETIME_61CYCLES_5;
  64. sConfig.OffsetNumber = ADC_OFFSET_NONE;
  65. sConfig.Offset = 0;
  66. if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  67. {
  68. Error_Handler();
  69. }
  70. /** Configure Regular Channel
  71. */
  72. sConfig.Channel = ADC_CHANNEL_8;
  73. sConfig.Rank = ADC_REGULAR_RANK_2;
  74. if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  75. {
  76. Error_Handler();
  77. }
  78. }