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

#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