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 寄存器,没有变化。
是哪里的问题?
设定的定时器工作频率是多少?240这个计时长一些,至少是ms级别,降低其它因素对这个计时的影响。
今天用 timer6 做实验。同样做自由定时器,用观察 CNT 值的方法翻转 IO 电平,那么 PSC 同样不起分频作用,等同于直通。
但是,如果打开中断,在中断里翻转 IO,这时 PSC 能正常起作用,输出波形的宽度正常。
PSC赋值之后,有没有让定时器产生更新事件, PSC赋值真正生效需要一个更新事件
今天再实验。把控制寄存器 0 的 ARSE 位设置为 1 ,PSC 就正常运行了。
页:
[1]