GD芯片定时器的怪现象:时钟源的频率在变吗?

[复制链接]
 楼主| 玄德 发表于 2023-2-28 17:22 | 显示全部楼层 |阅读模式
本帖最后由 玄德 于 2023-3-1 09:59 编辑


GD32F470VIT6 芯片,用 IO 翻转的办法,配合示波器,简单测量定时器的时钟源的频率。
程序大概是这样:

PSC 赋值;
while(1)
      {
      IO翻转;
      定时器 CNT 清零,启动;
      while    ( CNT < 240 );
      }

根据电平的宽度和 PSC、"240" 这些数值,可以估算出时钟源的频率值。
测试 TIMER5,得到的频率居然是变化的,有时是 120MHz,有时是 240MHz,甚至 480MHz 。
TIMER11 也有类似的现象。
多次实验,发现问题这样描述更合适:PSC 不起作用,无论是 0、1、2 还是 59,只要阈值“240”不变,脉冲宽度就不变。

示波器没问题;观察 RCU 寄存器,没有变化。
是哪里的问题?




zchong 发表于 2023-3-1 06:53 来自手机 | 显示全部楼层
设定的定时器工作频率是多少?240这个计时长一些,至少是ms级别,降低其它因素对这个计时的影响。
 楼主| 玄德 发表于 2023-3-3 10:45 | 显示全部楼层

今天用 timer6 做实验。同样做自由定时器,用观察 CNT 值的方法翻转 IO 电平,那么 PSC 同样不起分频作用,等同于直通。

但是,如果打开中断,在中断里翻转 IO,这时 PSC 能正常起作用,输出波形的宽度正常。

duzhiqiang521 发表于 2023-3-5 17:53 | 显示全部楼层
PSC赋值之后,  有没有让定时器产生更新事件, PSC赋值真正生效需要一个更新事件

评论

谢谢。看5楼。  发表于 2023-3-6 10:25
 楼主| 玄德 发表于 2023-3-6 10:24 | 显示全部楼层


今天再实验。把控制寄存器 0 的 ARSE 位设置为 1 ,PSC 就正常运行了。


1430364054ed67d196.png





您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:有事请找 xuander

153

主题

5969

帖子

44

粉丝
快速回复 在线客服 返回列表 返回顶部