|
|
@ -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); |
|
|
|
} |