From 185c0bd55074cc7b248a192ba2e3234c01614975 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 16 Sep 2023 09:55:45 +0800 Subject: [PATCH] fix zpwm generator bug --- chip/zpwm_generator.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/chip/zpwm_generator.cpp b/chip/zpwm_generator.cpp index 8704090..d2ee738 100644 --- a/chip/zpwm_generator.cpp +++ b/chip/zpwm_generator.cpp @@ -33,6 +33,8 @@ void ZPWMGenerator::startPWM(float freq, float duty) { __HAL_TIM_SET_AUTORELOAD(m_htim, autoreload); __HAL_TIM_SET_PRESCALER(m_htim, prescaler); + // printf("auto reload %d %f %f\n", autoreload, duty, duty / 100.0 * __HAL_TIM_GET_AUTORELOAD(m_htim)); + /** * @brief */ @@ -44,13 +46,19 @@ void ZPWMGenerator::startPWM(float freq, float duty) { sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; - if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, m_channel) != HAL_OK) { + if (HAL_TIM_PWM_ConfigChannel(m_htim, &sConfigOC, m_channel) != HAL_OK) { Error_Handler(); } // HAL_TIM_PWM_Start(m_htim, Channel); - HAL_TIM_PWM_Start(m_htim, m_channel); + if (HAL_TIM_PWM_Start(m_htim, m_channel) != HAL_OK) { + Error_Handler(); + } } void ZPWMGenerator::stopPWM() { + float duty = 0; + if (!m_polarity) { + duty = 100.0 - duty; + } // HAL_TIM_PWM_Stop(m_htim, m_channel); - startPWM(0); + startPWM(duty); }