OpenEdv-开源电子网

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

STM32定时器预装载寄存器的理解?

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-9-24
在线时间
0 小时
发表于 2013-9-24 10:43:39 | 显示全部楼层 |阅读模式
 

自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当TIMx_CR1寄存器中的UDIS位等于’0’时,产生更新事件。更新事件也可以由软件产生。这个预装载寄存器是什么,没有找找到关于它的库函数。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-9-24 12:23:41 | 显示全部楼层
预装载寄存器的概念应该是相对于影子寄存器来说的。影子寄存器是即时其作用的,而预装载寄存器的值只有传递到影子寄存器才能起作用,你可以把它理解为一个缓存。就程序员的角度观察,两者共用一个地址,无法直接区别访问,只能通过另外的办法来设置对该地址操作的具体行为。

作为类比,你可以把预装载寄存器理解为内存中的cache,数据写入了cache,却是不一定写入内存的。当然你可以通过MMU设置为写穿(write through)或写回(write back)模式。
业余程序玩家。
回复 支持 2 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-24 11:35:26 | 显示全部楼层
在精确波形控制的时候,才用到,一般的pwm输出,不用这个也没什么问题。
至于库函数是怎么设置的,我也不清楚了,不用库函数,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2013-9-24
在线时间
0 小时
 楼主| 发表于 2013-9-24 14:59:48 | 显示全部楼层
回复【3楼】ofourme:
---------------------------------
谢谢哈,有点明白了
回复 支持 反对

使用道具 举报

10

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2013-5-6
在线时间
3 小时
发表于 2015-4-9 07:51:26 | 显示全部楼层
回复【4楼】ctp2013:
---------------------------------
void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload) 这个可自动重装载 改变脉冲频率
回复 支持 反对

使用道具 举报

16

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
265
金钱
265
注册时间
2015-11-1
在线时间
34 小时
发表于 2015-11-12 12:29:55 | 显示全部楼层
楼主解释的详尽,受教了
这是我的小尾巴~
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2015-3-13
在线时间
19 小时
发表于 2016-7-17 13:26:26 | 显示全部楼层
谢谢 完美的解答了我的疑惑
回复 支持 反对

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2015-4-7
在线时间
22 小时
发表于 2016-9-8 17:00:21 | 显示全部楼层
ofourme 发表于 2013-9-24 12:23
预装载寄存器的概念应该是相对于影子寄存器来说的。影子寄存器是即时其作用的,而预装载寄存器的值只有传递 ...

预装载在实际应用中是怎么用的?
失能预装载功能,在装载值始终不变的情况下,我感觉只要第一次往预装载寄存器就可以。
定时器中的通道预装载是干什么用的?
回复 支持 反对

使用道具 举报

16

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2015-4-7
在线时间
22 小时
发表于 2016-9-8 17:04:32 | 显示全部楼层
正点原子 发表于 2013-9-24 11:35
在精确波形控制的时候,才用到,一般的pwm输出,不用这个也没什么问题。
至于库函数是怎么设置的,我也不清 ...

如果不开启定时器预装载和定时器通道预装载,是不是会有在自动重载的时候花费比较长的时间?
回复 支持 反对

使用道具 举报

3

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2016-10-8
在线时间
50 小时
发表于 2016-10-11 09:20:16 | 显示全部楼层
吴月涛 发表于 2015-4-9 07:51
回复【4楼】ctp2013:
---------------------------------
void TIM_SetAutoreload(TIM_TypeDef*  ...

你好,我想请教一个问题:定时器的初始化中不是能设置自动重装载值吗?就是这样的语句:
TIM_TimeBaseStructure.TIM_Period = arr;
那这句话和void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);函数是一样的功能吗?有什么区别的地方吗?麻烦您知道的话告知我一下,谢谢了
回复 支持 反对

使用道具 举报

3

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2016-10-8
在线时间
50 小时
发表于 2016-10-11 09:56:47 | 显示全部楼层
正点原子 发表于 2013-9-24 11:35
在精确波形控制的时候,才用到,一般的pwm输出,不用这个也没什么问题。
至于库函数是怎么设置的,我也不清 ...

原子哥,我想请教您一个问题:使用STM32库函数初始化定时器操作的时候,只是设置了arr,psc,时钟分频因子,计数模式这几个参数,没有看到对控制寄存器的CEN(使能计数器),ARPE(自动重装载预装载允许位)两个位的设置,这两个位是在库函数里默认已经设置好了吗?
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-7-22
在线时间
7 小时
发表于 2016-10-14 18:12:08 | 显示全部楼层
非常感谢  理解了!!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 23:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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