无法去污粉 发表于 2025-4-29 19:04

HC32F334上怎么实现软件延迟处理?

在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_tburst_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;
      }
    }
}
即:打嗝模式判定后,延迟一段时间再停波。


9dome猫 发表于 2025-6-30 16:03

通过定时器的影子寄存器和更新事件,实现软件判定后延迟一段时间再关闭 PWM。

远芳侵古道 发表于 2025-6-30 23:38

适用于电机控制、电源管理等需要周期性停波的场景。
页: [1]
查看完整版本: HC32F334上怎么实现软件延迟处理?