GD32F405 Timer单脉冲模式的一个疑似BUG

文章描述了一个使用Timer2进行外部触发输入和脉冲输出的系统,在特定代码修改后,出现CH3和CH2在第一次触发后未能在预期周期恢复高电平,但在第二次触发后恢复正常。增加CAR/CH2CV/CH3CV数值1后,问题不再复现,推测可能与CPU的O3CPRE信号有关。
摘要由CSDN通过智能技术生成

       使用的计时器为Timer2,用到Timer2的CH0为外部触发输入(低电平有效),Timer2的CH3为触发后延迟和加宽后的脉冲输出(低电平有效)。

       CAR寄存器设置为1051,CH3CV设置为4;控制寄存器设置为边沿对齐,向上计数,单脉冲模式,不分频,重复计数值为0。

       CH3配置为输出极性低有效,使能比较输出,工作在PWM1模式。

        寄存器数值如下所示:

        CTL0: 0x0088

        CTL1: 0x0060

        SMCFG: 0x0055

        CHCTL0: 0x0021

        CHCTL1: 0x7070

        CHCTL2: 0x3303

        CAR: 0x041B

        CH2CV: 0x000C

        CH3CV: 0x0004

        在启动事件触发后,大部分情况下,工作都是正常的。但是,有一次在别的与Timer无关的位置增加了一点代码,立即出现下述情况:

        CH0的触发信号第一次到来之后,CH3正常延迟输出低电平,但是未在预期的计数周期后恢复到高电平。

        CH0的触发信号第二次到来之后,CH3输出恢复到高电平,并在正常延迟后输出低电平,在预定计数周期之后正常恢复到高电平。

        同时输出的CH2现象与CH3保持一致。

        后续一直重复前述两个触发信号到来时的现象。

        后来,将CAR/CH2CV/CH3CV均增加数值1,该现象未再复现。

        目前暂时无法确定相关故障现象的原因,推测为CPU的O3CPRE信号在第一次触发后,未能够在计数溢出后正常切换电平。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值