#pragma once #include #include "basic/base.hpp" #ifdef HAL_TIM_MODULE_ENABLED namespace iflytop { using namespace iflytop; class ZTIM { public: typedef enum { ktm_null, ktm_timer, ktm_pwm, } mode_t; typedef function ontimirq_t; private: zchip_tim_t *m_htim; mode_t m_mode; volatile bool m_timer_start; ontimirq_t m_simpleTimer_cb; public: ZTIM() {} void initialize(zchip_tim_t *htim, mode_t mode); mode_t getMode(); /****************************************************** * kTimMode_timer * ******************************************************/ /** * @brief startTimer * * @param periodus 定时器周期 * @param onirq 回调函数,如果为null,则使用上次注册的回调函数 */ void simpleTimer_regCb(ontimirq_t cb) { m_simpleTimer_cb = cb; } void simpleTimer_startByPeriod(uint32_t periodus); void simpleTimer_startByFreq(float freq); void simpleTimer_stop(); /******************************************************************************* * PWM_MODE * *******************************************************************************/ void setPWMFreq(float freq); void startPWM(uint32_t Channel, float duty); void stopPWM(uint32_t Channel); }; } // namespace iflytop #endif