OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13452|回复: 9

定时器寄存器TIMx_CNT作用???

[复制链接]

24

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-1-19
在线时间
50 小时
发表于 2018-9-14 10:47:57 | 显示全部楼层 |阅读模式
5金钱
定时器通过计数,然后到达TIMx_ARR与TIMx_PSC设定计算好的数值,开启中断。TIMx_CNT是定时器的计数器,存储了当前定时器的计数值。TIM_SetCounter()可以设定TIMx_CNT的值,这样设置之后会不会影响定时器的准确计时?我在debug中调试发现
TIMx_CNT与真正的计数器对不上,TIMx_CNT是不是没有跟定时器
计数器同步? 1.jpg 2.jpg Inked3_LI.jpg Inked4_LI.jpg


最佳答案

查看完整内容[请看2#楼]

这样比喻吧 ARR 就是定时闹钟的时间, CNT就是时间, 你看了一眼表的时间, 过一会再看时间就变了, 这难道不正常么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-14 10:47:58 | 显示全部楼层
这样比喻吧
ARR 就是定时闹钟的时间, CNT就是时间, 你看了一眼表的时间, 过一会再看时间就变了, 这难道不正常么?
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7527
金钱
7527
注册时间
2016-11-30
在线时间
641 小时
发表于 2018-9-14 11:31:05 | 显示全部楼层
不可能
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-9-14 12:19:37 | 显示全部楼层
判断的依据是什么
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

24

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-1-19
在线时间
50 小时
 楼主| 发表于 2018-9-14 13:25:52 | 显示全部楼层
1208 发表于 2018-9-14 12:19
判断的依据是什么

我的ARR寄存器是4999,计数顺序是往上计数。对应 图中TIM3_ARR 0x1387.运行到第一个断点 TIM3_CNT应该很小的,第二个图已经是0x1303 ,对应十进制4867。四张图是依次debug运行的。其他几个图的数据好像差别也挺大的。
回复

使用道具 举报

3

主题

312

帖子

0

精华

高级会员

Rank: 4

积分
907
金钱
907
注册时间
2011-10-19
在线时间
196 小时
发表于 2018-9-14 14:37:25 | 显示全部楼层
初始化的时候添加这个再试下, DBGMCU_Config(DBGMCU_TIM3_STOP, ENABLE);
回复

使用道具 举报

24

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-1-19
在线时间
50 小时
 楼主| 发表于 2018-9-16 13:12:57 | 显示全部楼层
edmund1234 发表于 2018-9-14 10:47
这样比喻吧
ARR 就是定时闹钟的时间, CNT就是时间, 你看了一眼表的时间, 过一会再看时间就变了, 这难 ...

对他清零,会影响定时器的周期嘛?
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-16 13:16:53 | 显示全部楼层
本帖最后由 edmund1234 于 2018-9-16 13:22 编辑
曾洪涌 发表于 2018-9-16 13:12
对他清零,会影响定时器的周期嘛?
你的问题不明确, 清零是什么时候清零呢?如果是TIM还没使能前, 怎样清也不影响的
否则, 当然会啊。。。
回复

使用道具 举报

24

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-1-19
在线时间
50 小时
 楼主| 发表于 2018-9-16 14:03:46 | 显示全部楼层
edmund1234 发表于 2018-9-16 13:16
你的问题不明确, 清零是什么时候清零呢?如果是TIM还没使能前, 怎样清也不影响的
否则, 当然会啊。。。

图二,TIMx_CNT的值为0x1303,十进制为4867;而TIMx_ARR为0x1387,十进制为4999。TIMx_CNT的值与TIMx_ARR相同时,就会中断,然后TIMx_CNT的值清零,完成一次周期。这样看图二,明明是刚中断完发生事件,理论值应该是接近于0.
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-16 16:23:22 | 显示全部楼层
曾洪涌 发表于 2018-9-16 14:03
图二,TIMx_CNT的值为0x1303,十进制为4867;而TIMx_ARR为0x1387,十进制为4999。TIMx_CNT的值与TIMx_AR ...

天上一天,人间一年, 而实际上是人间一天, 程式一年
你真要看TIMX_CNT的值, 就定义个变量ABC, 然后看ABC的值

if (TIM_GetIT。。。。。
{
    ABC=TIM3->CNT;
   TIM_ClearITPend....
    LED=!LED....

回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 11:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表