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
71 lines
1.9 KiB
#pragma once
|
|
#include <functional>
|
|
|
|
#include "mutex.hpp"
|
|
#include "zbasic.h"
|
|
|
|
#ifdef HAL_ADC_MODULE_ENABLED
|
|
namespace iflytop {
|
|
using namespace std;
|
|
class ZADC {
|
|
private:
|
|
ADC_HandleTypeDef* m_hadc1 = nullptr;
|
|
int32_t m_channel = 0;
|
|
int32_t m_samplingTime = ADC_SAMPLETIME_480CYCLES;
|
|
bool inited = false;
|
|
|
|
zmutex m_mutex = {"ZADC"};
|
|
int32_t m_cacheVal = 0;
|
|
const char* m_name = "not set";
|
|
|
|
public:
|
|
/**
|
|
* @brief
|
|
*
|
|
* @param hadc1 adc handle
|
|
* @param channel
|
|
* ADC_CHANNEL_0
|
|
* ADC_CHANNEL_1
|
|
* ADC_CHANNEL_2
|
|
* ADC_CHANNEL_3
|
|
* ADC_CHANNEL_4
|
|
* ADC_CHANNEL_5
|
|
* ADC_CHANNEL_6
|
|
* ADC_CHANNEL_7
|
|
* ADC_CHANNEL_8
|
|
* ADC_CHANNEL_9
|
|
* ADC_CHANNEL_10
|
|
* ADC_CHANNEL_11
|
|
* ADC_CHANNEL_12
|
|
* ADC_CHANNEL_13
|
|
* ADC_CHANNEL_14
|
|
* ADC_CHANNEL_15
|
|
* ADC_CHANNEL_16
|
|
* ADC_CHANNEL_17
|
|
* ADC_CHANNEL_18
|
|
* @param m_samplingTime
|
|
* ADC_SAMPLETIME_3CYCLES
|
|
* ADC_SAMPLETIME_15CYCLES
|
|
* ADC_SAMPLETIME_28CYCLES
|
|
* ADC_SAMPLETIME_56CYCLES
|
|
* ADC_SAMPLETIME_84CYCLES
|
|
* ADC_SAMPLETIME_112CYCLES
|
|
* ADC_SAMPLETIME_144CYCLES
|
|
* ADC_SAMPLETIME_480CYCLES
|
|
*
|
|
*/
|
|
|
|
void initialize(const char* name, ADC_HandleTypeDef* hadc1, int32_t channel, int32_t samplingTime = ADC_SAMPLETIME_480CYCLES);
|
|
|
|
bool isInited() { return inited; }
|
|
|
|
int32_t get_adc_value();
|
|
int32_t get_adc_af_filter();
|
|
|
|
void setCacheVal(int32_t val);
|
|
int32_t getCacheVal();
|
|
|
|
void updateAdcValToCache();
|
|
};
|
|
} // namespace iflytop
|
|
#endif
|