OpenEdv-开源电子网

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

为什么配置PWM输出的时候一定要使能预装载

[复制链接]

94

主题

260

帖子

0

精华

高级会员

Rank: 4

积分
650
金钱
650
注册时间
2013-10-23
在线时间
48 小时
发表于 2014-8-4 22:01:30 | 显示全部楼层 |阅读模式
5金钱
14.3.9  WM 模式
脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空
比的信号。
在TIMx_CCMRx寄存器中的OCxM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设
置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预
装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能
自动重装载的预装载寄存器

以上摘自F103中文手册,为什么一定要预装载,立即写入不是更好吗?

最佳答案

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

回复【3楼】骑着蜗牛追梦想: --------------------------------- 你可以不使能
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165369
金钱
165369
注册时间
2010-12-1
在线时间
2110 小时
发表于 2014-8-4 22:01:31 | 显示全部楼层
回复【3楼】骑着蜗牛追梦想:
---------------------------------
你可以不使能
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-8-4
在线时间
14 小时
发表于 2014-8-4 22:10:09 | 显示全部楼层
这是影子寄存器和预装载寄存器的区别和作用吧
生命不息,学习不止
回复

使用道具 举报

94

主题

260

帖子

0

精华

高级会员

Rank: 4

积分
650
金钱
650
注册时间
2013-10-23
在线时间
48 小时
 楼主| 发表于 2014-8-4 22:39:25 | 显示全部楼层
回复【2楼】liuzhenwei2014:
---------------------------------
是啊,使能预装载以后就是在下次更新事件后将预装载寄存器的值送入影子寄存器,可是手册上为什么说一定要使能预装载,使能预装载后那么波形不就只能在CNT产生一次溢出后才能开始输出波形,也就是第一个周期是没有波形的。立即写入的话不就能在第一个周期就产生波形吗,这样不是更好吗
回复

使用道具 举报

11

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2014-8-4
在线时间
14 小时
发表于 2014-8-5 09:28:49 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥你的意思是输入捕捉有溢出的现象吗?
生命不息,学习不止
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165369
金钱
165369
注册时间
2010-12-1
在线时间
2110 小时
发表于 2014-8-5 23:12:22 | 显示全部楼层
回复【5楼】liuzhenwei2014:
---------------------------------
我是考虑了溢出的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2017-5-9
在线时间
18 小时
发表于 2017-7-7 17:09:19 | 显示全部楼层
楼主懂了吗,求解释
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165369
金钱
165369
注册时间
2010-12-1
在线时间
2110 小时
发表于 2017-7-8 23:07:31 | 显示全部楼层
不一定,纯粹输出PWM,根本不需要使能预装载。
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-29
在线时间
50 小时
发表于 2017-12-29 14:44:44 | 显示全部楼层
考虑溢出是什么意思?是指CNT的值已经大于了要设定的CCR的值?那这种情况会发生什么。。。。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-7-29
在线时间
2 小时
发表于 2019-7-31 12:53:48 | 显示全部楼层
也想问这个问题
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-10-2
在线时间
8 小时
发表于 2020-1-12 16:00:25 | 显示全部楼层
本帖最后由 wang27 于 2020-1-12 16:09 编辑

使能预装载的意义在于可以多个通道同时输出时,时序能准确地同步。网上的一段有意义的解释是:设计preload register和shadow register的好处是,所有真正需要起作用的寄存器(shadow register)可以在同一个时间(发生更新事件时)被更新为所对应的preload register的内容,这样可以保证多个通道的操作能够准确地同步。如果没有shadow register,或者preload register和shadow register是直通的,即软件更新preload register时,同时更新了shadow register,因为软件不可能在一个相同的时刻同时更新多个寄存器,结果造成多个通道的时序不能同步,如果再加上其它因素(例如中断),多个通道的时序关系有可能是不可预知的。可见如果只是单通道输出,多通道输出时没时序精准的同步更新要求,不使能也可以的。
回复

使用道具 举报

4

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-1-25
在线时间
16 小时
发表于 2020-2-27 17:48:36 | 显示全部楼层
wang27 发表于 2020-1-12 16:00
使能预装载的意义在于可以多个通道同时输出时,时序能准确地同步。网上的一段有意义的解释是:设计preload  ...

非常好,解析的到位
诚交各路大侠
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-6-18
在线时间
7 小时
发表于 2021-7-19 17:30:43 | 显示全部楼层
wang27 发表于 2020-1-12 16:00
使能预装载的意义在于可以多个通道同时输出时,时序能准确地同步。网上的一段有意义的解释是:设计preload  ...

太妙了。解决了我的疑问
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2020-7-22
在线时间
12 小时
发表于 2022-1-16 18:43:09 | 显示全部楼层
wang27 发表于 2020-1-12 16:00
使能预装载的意义在于可以多个通道同时输出时,时序能准确地同步。网上的一段有意义的解释是:设计preload  ...

感谢,,,,
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2024-12-12
在线时间
0 小时
发表于 2024-12-14 22:56:08 来自手机 | 显示全部楼层
前来感谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-1-19 03:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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