关于GD32F303RCT6的TImer0 CH0的PWM问题

[复制链接]
1666|5
手机看帖
扫描二维码
随时随地手机跟帖
一碗卤面|  楼主 | 2025-6-15 15:27 | 显示全部楼层 |阅读模式
我在使用Timer0的CH0控制蜂鸣器时发现一个奇怪的现象,问题如下:1、我把Timer0的CH0配置PWM用于控制蜂鸣器。
2、在前期开发过程都一直正常
3、随着开发代码量的增加,增加的代码量是应用层的代码,与硬件控制无关,发现在代码量超出一定值时,PWM变成无输出了!!
     具体编译后的代码情况如下:
PWM正常时:Program Size: Code=46006 RO-data=3118 RW-data=2628 ZI-data=30524
PWM无输出时:Program Size: Code=46058 RO-data=3118 RW-data=2628 ZI-data=30524
4、蜂鸣器的定时器开关在systick中断执行。
5、进一步分析:我把定时器的溢出及比较中断打开,在中断发生时,输出调试信息,发现中断正常运行

现在的解决方案:把定时器配置成普通16位定时器,在中断中手动翻转输出信号,是正常的。

以上问题,有哪位大咖能解释下吗?

使用特权

评论回复
一碗卤面|  楼主 | 2025-6-15 15:50 | 显示全部楼层
补充,我用ST的库是正常的,用GD的库出现上述问题

使用特权

评论回复
dffzh| | 2025-6-16 17:05 | 显示全部楼层
正常来说,纯应用代码怎么会影响到底层呢?仿真单步调试看下,无输出时候,PWM输出那块代码是否有执行?或者用代码比较工具对比一下有输出和无输出的代码,看新增代码是不是有(死)循环什么的导致的。

使用特权

评论回复
dffzh| | 2025-6-16 17:07 | 显示全部楼层
本帖最后由 dffzh 于 2025-6-16 17:08 编辑
一碗卤面 发表于 2025-6-15 15:50
补充,我用ST的库是正常的,用GD的库出现上述问题
那确实有些诡异呀,在有输出的代码里逐步增加代码,看加到什么时候或什么代码的时候出现无输出异常?新增的应用代码有木有定义什么特殊地址? 如果还有问题可以直接回复我,咱一起看下。

使用特权

评论回复
NightfallBallad| | 2025-6-16 17:26 | 显示全部楼层
打断点看看那,或者用GD的例程运行一下看看

使用特权

评论回复
一碗卤面|  楼主 | 2025-6-17 09:06 | 显示全部楼层
问题应该找到了,估计是配置定时器时,定义的timer_oc_parameter_struct局部变量,使用它之前没有进行初始化,部分成员赋值导致的。

使用特权

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

本版积分规则

4

主题

10

帖子

0

粉丝