You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.9 KiB

12 months ago
11 months ago
12 months ago
  1. #pragma once
  2. #include <functional>
  3. #include "mutex.hpp"
  4. #include "zbasic.h"
  5. #ifdef HAL_ADC_MODULE_ENABLED
  6. namespace iflytop {
  7. using namespace std;
  8. class ZADC {
  9. private:
  10. ADC_HandleTypeDef* m_hadc1 = nullptr;
  11. int32_t m_channel = 0;
  12. int32_t m_samplingTime = ADC_SAMPLETIME_480CYCLES;
  13. bool inited = false;
  14. zmutex m_mutex = {"ZADC"};
  15. int32_t m_cacheVal = 0;
  16. const char* m_name = "not set";
  17. public:
  18. /**
  19. * @brief
  20. *
  21. * @param hadc1 adc handle
  22. * @param channel
  23. * ADC_CHANNEL_0
  24. * ADC_CHANNEL_1
  25. * ADC_CHANNEL_2
  26. * ADC_CHANNEL_3
  27. * ADC_CHANNEL_4
  28. * ADC_CHANNEL_5
  29. * ADC_CHANNEL_6
  30. * ADC_CHANNEL_7
  31. * ADC_CHANNEL_8
  32. * ADC_CHANNEL_9
  33. * ADC_CHANNEL_10
  34. * ADC_CHANNEL_11
  35. * ADC_CHANNEL_12
  36. * ADC_CHANNEL_13
  37. * ADC_CHANNEL_14
  38. * ADC_CHANNEL_15
  39. * ADC_CHANNEL_16
  40. * ADC_CHANNEL_17
  41. * ADC_CHANNEL_18
  42. * @param m_samplingTime
  43. * ADC_SAMPLETIME_3CYCLES
  44. * ADC_SAMPLETIME_15CYCLES
  45. * ADC_SAMPLETIME_28CYCLES
  46. * ADC_SAMPLETIME_56CYCLES
  47. * ADC_SAMPLETIME_84CYCLES
  48. * ADC_SAMPLETIME_112CYCLES
  49. * ADC_SAMPLETIME_144CYCLES
  50. * ADC_SAMPLETIME_480CYCLES
  51. *
  52. */
  53. void initialize(const char* name, ADC_HandleTypeDef* hadc1, int32_t channel, int32_t samplingTime = ADC_SAMPLETIME_480CYCLES);
  54. bool isInited() { return inited; }
  55. int32_t get_adc_value();
  56. int32_t get_adc_af_filter();
  57. void setCacheVal(int32_t val);
  58. int32_t getCacheVal();
  59. void updateAdcValToCache();
  60. };
  61. } // namespace iflytop
  62. #endif