打印
[方案相关]

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

[复制链接]
595|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
无法去污粉|  楼主 | 2025-4-29 19:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在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;
        }
    }
}
即:打嗝模式判定后,延迟一段时间再停波。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

807

帖子

1

粉丝