在HC32F334中,Timer4、TimerA/B支持灵活的PWM停止控制和外部触发事件响应,可以自己做延迟空闲处理。
常见实现方法:
通过软件延迟处理
在Burst进入判断时,不是立刻关闭PWM,而是:
c
复制
编辑
#define BURST_IDLE_DELAY_CYCLE 50 // 保持50个PWM周期,具体数值视应用决定
static uint16_t burst_delay_counter = 0;
static uint8_t burst_pending_idle = 0;
void Burst_CheckHandler()
{
if (burst_condition_met())
{
if (burst_pending_idle == 0)
{
burst_pending_idle = 1;
burst_delay_counter = BURST_IDLE_DELAY_CYCLE;
}
}
if (burst_pending_idle)
{
if (burst_delay_counter > 0)
{
burst_delay_counter--;
}
else
{
PWM_Stop(); // 真正停波
burst_pending_idle = 0;
}
}
}
即:打嗝模式判定后,延迟一段时间再停波。
|