diff --git a/sdk b/sdk index 57cf05c..baafde6 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 57cf05c056145c69697f94f5320581ad1dcb8cc3 +Subproject commit baafde681f0e2f87659d06e8801f9ec9ea1c2277 diff --git a/usrc/main.cpp b/usrc/main.cpp index d44a525..bfc8a41 100644 --- a/usrc/main.cpp +++ b/usrc/main.cpp @@ -53,19 +53,47 @@ static int32_t getDeviceId() { *******************************************************************************/ class PWMCtrler : public ZIPWMCtrl { ZPWMGenerator pwm; - int32_t freq; - int32_t duty; - int32_t state; + int32_t m_freq = 50000; + int32_t m_duty = 50; + int32_t m_state; public: - void initialize() { pwm.initialize(&htim2, TIM_CHANNEL_2, 25000, 1); } + void initialize() { pwm.initialize(&htim2, TIM_CHANNEL_2, 25000, 1); } + + virtual int32_t pwm_set_state(int32_t state) { + if (state) { + pwm.startPWM(m_freq, m_duty); + } else { + pwm.stopPWM(); + } + m_state = state; + } + virtual int32_t pwm_get_state(int32_t& state) { + state = m_state; + return 0; + } + virtual int32_t set_pwm_duty(int32_t duty) { - pwm.startPWM(duty); + m_duty = duty; + if (m_state) { + pwm.startPWM(m_freq, m_duty); + } + } + virtual int32_t get_pwm_duty(int32_t& duty) { + duty = m_duty; + return 0; + } + + virtual int32_t set_pwm_freq(int32_t freq) { + m_freq = freq; + if (m_state) { + pwm.startPWM(m_freq, m_duty); + } + } + virtual int32_t get_pwm_freq(int32_t& duty) { + duty = m_freq; return 0; } - virtual int32_t set_pwm_freq(int32_t freq) {} - virtual int32_t get_pwm_duty() {} - virtual int32_t get_pwm_freq() {} }; PWMCtrler pwmCtrler; @@ -126,7 +154,10 @@ void umain() { {.pin = PC7, .mode = ZGPIO::kMode_pulldown, .mirror = false, .initLevel = false, .log_when_setstate = false}, {.pin = PC8, .mode = ZGPIO::kMode_pulldown, .mirror = false, .initLevel = false, .log_when_setstate = false}, }, - .pwmctrl = &pwmCtrler, + .pwmctrl = + { + &pwmCtrler, + }, }; initer.init(&cfg); initsubmodule();