玄德 发表于 2023-2-28 17:22

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

本帖最后由 玄德 于 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:24



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








页: [1]
查看完整版本: GD芯片定时器的怪现象:时钟源的频率在变吗?