打印

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

[复制链接]
650|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
玄德|  楼主 | 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赋值真正生效需要一个更新事件

使用特权

评论回复
评论
玄德 2023-3-6 10:25 回复TA
谢谢。看5楼。 
5
玄德|  楼主 | 2023-3-6 10:24 | 只看该作者


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








使用特权

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

本版积分规则

个人签名:有事请找 xuander

153

主题

5916

帖子

44

粉丝