养只小猫咪 发表于 2023-4-21 10:32:26

在用T0做定时器,T1做计数器的时候遇到的一些疑惑,求路过的大佬指导一二------已解决

本帖最后由 养只小猫咪 于 2023-4-21 11:16 编辑

想按照冲哥视频的思路,用T0做定时,T1作为计数器使用代码如下



发现一个很玄学的问题,我在定时器0的中断函数中计算完计数脉冲后,对T0的TH1和TL1进行了清0,不知道为什么它没有执行还是咋,TL的值仍然是累加的。

甚至我在赋值后面打印数据,仍然是这样




完整工程代码请下载附件观看!

养只小猫咪 发表于 2023-4-21 10:49:16

本帖最后由 养只小猫咪 于 2023-4-21 10:51 编辑

参考了群友的一些帖子,将T1的工作模式从模式0改成了模式1,功能上是正常了,可是还是存在个疑问,为什么在模式0,自动重装载的模式下,会出现这种问题?

我计数的值很小,没有达到触发中断的地步,为啥我写不进去TH1和TL1?

mwzg 发表于 2023-4-21 10:59:32

请问解决这个问题了吗,是什么原因呢

养只小猫咪 发表于 2023-4-21 11:10:48

mwzg 发表于 2023-4-21 10:59
请问解决这个问题了吗,是什么原因呢

刚解决

mwzg 发表于 2023-4-21 11:12:32

养只小猫咪 发表于 2023-4-21 11:10
刚解决

是什么原因呢

养只小猫咪 发表于 2023-4-21 11:15:02

本帖最后由 养只小猫咪 于 2023-4-21 11:18 编辑

我太傻了,真的!!!





也就说说当定时器工作在模式0的时候,在它没有溢出的时候对TH0以及TL0的写入,实际上是写到了RL_TH0和RL_TL0中,
只有当计数溢出产生中断的时候,我们写入的RL_TH0和RL_TL0的值才会被装载进TH0和TL0里面!!!
所以要使用模式1,这样就可以直接对TH0和TL0进行实时的重装载!!

养只小猫咪 发表于 2023-4-21 11:15:39

mwzg 发表于 2023-4-21 11:12
是什么原因呢

看下我刚回复的帖子

mwzg 发表于 2023-4-21 11:17:30

养只小猫咪 发表于 2023-4-21 11:10
刚解决

是外部脉冲一直有,所以一直在加吗,只能在读完后关闭计数器,在清,清完再打开计数器

mwzg 发表于 2023-4-21 11:19:16

养只小猫咪 发表于 2023-4-21 11:15
我太傻了,真的!!!




哦哦,好的,我看看

养只小猫咪 发表于 2023-4-21 11:23:22

mwzg 发表于 2023-4-21 11:17
是外部脉冲一直有,所以一直在加吗,只能在读完后关闭计数器,在清,清完再打开计数器 ...

你这样操作也是可行的,先关闭计数器,然后你写入初始值再打开计数器,也能实现


,不过更简单的操作还是将计数器的工作模式配置成不自动重装载模式
页: [1] 2
查看完整版本: 在用T0做定时器,T1做计数器的时候遇到的一些疑惑,求路过的大佬指导一二------已解决