OpenEdv-开源电子网

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

定时器中自动重装载寄存器里面的自动重装载值到底是怎么回事?

[复制链接]

8

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2015-2-24
在线时间
0 小时
发表于 2015-3-16 21:09:01 | 显示全部楼层 |阅读模式
5金钱
到底是给谁重装?为什么还需要一个影子寄存器作为缓冲?
求解啊,菜鸟表示不懂啊!

最佳答案

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

回复【3楼】Jiangjiang: --------------------------------- 我上面表达有点问题   影子寄存器装的是溢出值     CNT是定时器当前值,这个值到了影子寄存器的值产生溢出事件  然后CNT的值变化请看3L 解释
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5757
金钱
5757
注册时间
2013-11-22
在线时间
1208 小时
发表于 2015-3-16 21:09:02 | 显示全部楼层
回复【3楼】Jiangjiang:
---------------------------------
我上面表达有点问题   影子寄存器装的是溢出值    
CNT是定时器当前值,这个值到了影子寄存器的值产生溢出事件  然后CNT的值变化请看3L 解释
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5757
金钱
5757
注册时间
2013-11-22
在线时间
1208 小时
发表于 2015-3-16 23:08:18 | 显示全部楼层
1.硬件自动重装 
2.影子寄存器保存的是定时器当前的计数值(或者溢出值),这个值是立即生效的值
这个计数值是从预装载寄存器(ARR)传过来的,但ARR什么时候把计数值传给影子寄存器呢?
这儿就有个预装载使能位(ARPE):当ARPE=0的时候,你写入ARR的值马上就传到影子寄存器,也就立即生效
当ARPE=1的时候,ARR的值就是直接传过去了,而是等到定时器更新事件发生,才把这个值传到影子寄存器,也就起到一个缓冲作用
回复

使用道具 举报

8

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2015-2-24
在线时间
0 小时
 楼主| 发表于 2015-3-17 11:05:41 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
是给哪个寄存器重装啊?定时器当前的计数值不是存在TIMx_CNT里面吗?
是不是吧TIMx_CNT里面的值到了影子寄存器里面的值就会溢出?然后TIMx_CNT中的值清零?
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11474
金钱
11474
注册时间
2014-4-1
在线时间
1297 小时
发表于 2015-3-17 11:44:21 | 显示全部楼层
回复【3楼】Jiangjiang:
---------------------------------

CNT 值到了 ARR 的值就会产生“事件”,然后事件会导致 CNT 重置(不一定是清零,因为有可能向下计数),看怎么设置了。
回复

使用道具 举报

10

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2013-5-6
在线时间
3 小时
发表于 2015-4-9 07:53:59 | 显示全部楼层
void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload)
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2019-2-5
在线时间
13 小时
发表于 2020-4-21 09:16:47 | 显示全部楼层
缓冲作用,为什么要缓冲那?
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2019-2-5
在线时间
13 小时
发表于 2020-4-21 09:57:09 | 显示全部楼层
二楼三楼已经回答的很好了,我说一下我的见解,这个自动重装载寄存器,他的作用是什么,我想从名字的角度去分析,为什么叫自动重装载寄存器那?我认为,这是因为这个寄存器里存储了CNT计数器的值,CNT随着时钟精确的计数,向上,向下,或者双向,那么例如是向下计数,当计数到0后,这时CNT寄存器里是0,从哪里再重新倒数那?怎么办,难道产生一事件,人为的从新给个数值,重新倒数.那得多费劲,怎么办那就重新装载原先的那个值呗,而这个值放在另一个寄存器中,因为这个值是重新装载时需要的值,也就叫这个寄存器为自动重装载寄存器,自动就是不用人为去再给啊?而这个寄存器还有个影子,什么是影子就是和我一样的家伙,为什么要有个影子寄存器,玩单片机的必须要有个概念,就是精准,因为单片机都可以是us级别的,它都那么精准了,而你却没有那么精准的概念,你就操纵不好它,发挥不了他的潜力.影子寄存器就是为了精准,假如向上计数,你想想,计数器正在计数,一直都在朝着自动重装载计数器的值去努力,正在计着那,突然你改了这个值,改小了,我发现我超过去了,怎么办?或者改大了,我继续增大的话,那我这次计数算什么?所以要自动重装载计数器的值不能随意改?,可以在计数到原来的自动重装载计数器值的时候,再更改,这样更准确.当然不求准确的话,也可直接就给值,这就是影子寄存器的作用,它的本尊,可以被用户什么时候修改都行,,可是这个影子可以根据需要时再修改,这就是影子的作用,为的就是精确,当然还有一种功能就是同步.stm32中有很多影子寄存器,比如还有预分频器中也有,同理分频不是你什么时候想分就分的,你得等它完成一次计数后再分吧.与尔分享,有错误请请指正!
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-7-14
在线时间
3 小时
发表于 2020-7-27 21:10:11 | 显示全部楼层
细雨清纱稻田 发表于 2020-4-21 09:57
二楼三楼已经回答的很好了,我说一下我的见解,这个自动重装载寄存器,他的作用是什么,我想从名字的角度去分析 ...

谢谢,讲得很详细了
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-4-1
在线时间
1 小时
发表于 2021-5-10 16:36:01 | 显示全部楼层
细雨清纱稻田 发表于 2020-4-21 09:57
二楼三楼已经回答的很好了,我说一下我的见解,这个自动重装载寄存器,他的作用是什么,我想从名字的角度去分析 ...

厉害
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2021-7-3
在线时间
12 小时
发表于 2021-7-28 10:53:14 | 显示全部楼层
细雨清纱稻田 发表于 2020-4-21 09:57
二楼三楼已经回答的很好了,我说一下我的见解,这个自动重装载寄存器,他的作用是什么,我想从名字的角度去分析 ...

谢谢啦,很透彻易懂
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-11-29
在线时间
6 小时
发表于 2022-9-1 17:51:36 | 显示全部楼层
细雨清纱稻田 发表于 2020-4-21 09:57
二楼三楼已经回答的很好了,我说一下我的见解,这个自动重装载寄存器,他的作用是什么,我想从名字的角度去分析 ...

通俗易懂,感谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 04:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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