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.
|
|
#pragma once
#include <functional>
#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<void()> ontimirq_t;
private: zchip_tim_t *m_htim; mode_t m_mode;
volatile bool m_timer_start;
ontimirq_t m_simpleTimer_cb;
bool m_timpwmPolarity[4];
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 * *******************************************************************************/
/**
* @brief * * @param Channel PWM通道 TIM_CHANNEL_1 TIM_CHANNEL_2 TIM_CHANNEL_3 TIM_CHANNEL_4 * @param Polarity 1:高为有效电平,0:低为有效电平 */ void setPWMPolarity(uint32_t Channel, uint32_t Polarity); void setPWMFreq(float freq); void startPWM(uint32_t Channel, float duty); void stopPWM(uint32_t Channel); };
} // namespace iflytop
#endif
|