Browse Source

fix zpwm generator bug

master
zhaohe 2 years ago
parent
commit
185c0bd550
  1. 14
      chip/zpwm_generator.cpp

14
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_AUTORELOAD(m_htim, autoreload);
__HAL_TIM_SET_PRESCALER(m_htim, prescaler); __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 * @brief
*/ */
@ -44,13 +46,19 @@ void ZPWMGenerator::startPWM(float freq, float duty) {
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_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(); Error_Handler();
} }
// HAL_TIM_PWM_Start(m_htim, Channel); // 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() { void ZPWMGenerator::stopPWM() {
float duty = 0;
if (!m_polarity) {
duty = 100.0 - duty;
}
// HAL_TIM_PWM_Stop(m_htim, m_channel); // HAL_TIM_PWM_Stop(m_htim, m_channel);
startPWM(0);
startPWM(duty);
} }
Loading…
Cancel
Save