OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖
楼主: E-angel

关于PWM模式,且听我娓娓道来

  [复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2015-3-3
在线时间
4 小时
发表于 2016-3-13 09:08:09 | 显示全部楼层
正点原子逻辑分析仪DL16劲爆上市
回复 支持 1 反对 0

使用道具 举报

5

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2013-7-31
在线时间
23 小时
发表于 2016-4-19 21:04:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2016-3-26
在线时间
49 小时
发表于 2016-5-6 13:08:22 | 显示全部楼层
本帖最后由 回首恨年少 于 2016-5-6 20:21 编辑

重新写了下我的问题,请看下一楼,不知道可以再编辑回复,抱歉。
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2016-3-26
在线时间
49 小时
发表于 2016-5-6 20:18:39 | 显示全部楼层
本帖最后由 回首恨年少 于 2016-5-9 20:37 编辑

好像没有问题了
回复 支持 反对

使用道具 举报

15

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2013-11-4
在线时间
112 小时
发表于 2016-5-26 14:35:06 | 显示全部楼层
讲的很清楚,一看就明白了
回复 支持 反对

使用道具 举报

22

主题

117

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
798
金钱
798
注册时间
2015-10-24
在线时间
160 小时
发表于 2016-6-4 11:25:09 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

Hxpe 该用户已被删除
发表于 2016-6-9 13:30:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2016-8-4
在线时间
0 小时
发表于 2016-8-4 09:17:31 | 显示全部楼层
/**
  * @brief  Sets the TIMx Capture Compare2 Register value
  * @param  TIMx: where x can be 1, 2, 3, 4, 5, 8, 9, 12 or 15 to select the TIM peripheral.
  * @param  Compare2: specifies the Capture Compare2 register new value.
  * @retval None
  */
void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2)
{
  /* Check the parameters */
  assert_param(IS_TIM_LIST6_PERIPH(TIMx));
  /* Set the Capture Compare2 Register value */
  TIMx->CCR2 = Compare2;
}

这个函数什么意思啊
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2016-8-2
在线时间
12 小时
发表于 2016-8-4 10:22:53 | 显示全部楼层
寄存器好些 还是库函数好些啊
回复 支持 反对

使用道具 举报

4

主题

63

帖子

0

精华

高级会员

Rank: 4

积分
579
金钱
579
注册时间
2016-2-24
在线时间
94 小时
发表于 2016-8-4 10:39:38 | 显示全部楼层
MARK!!!
回复 支持 反对

使用道具 举报

3

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2016-8-6
在线时间
16 小时
发表于 2016-8-13 16:48:10 | 显示全部楼层
写的太好,必须顶起
回复 支持 反对

使用道具 举报

0

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
379
金钱
379
注册时间
2016-6-2
在线时间
59 小时
发表于 2016-8-23 17:03:55 | 显示全部楼层
就你说的关于原子代码修改为PWM1的有个问题想问下。设置为PWM1且设置高电平有效,那么在向上计数开始时CNT<CCR被设置为高电平,按理说应该LED不亮啊?
回复 支持 1 反对 0

使用道具 举报

8

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2016-9-14
在线时间
56 小时
发表于 2016-9-21 14:57:11 | 显示全部楼层
请问一下当我们去定义TIM_OCInitStructure它的各参数值的时候,怎么体现出寄存器中对应位值是多少呢

    比如说:TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
但是在寄存器中的设置应是 使得捕获/比较使能寄存器 中的CCxP置为0 才是高电平有效。我在tim.c中也没找到寄存器值。

TIM_OCPolarity设置输出极性与寄存器CCxP的值是怎样联系起来的?求回复!
回复 支持 反对

使用道具 举报

37

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
717
金钱
717
注册时间
2016-6-10
在线时间
191 小时
发表于 2016-11-3 16:23:54 | 显示全部楼层
楼主说的很对,但是我觉得改为PW1模式呼吸灯常亮还有一个很重要的原因是原子哥PWM占空比的设置并不是从0~100的,所以我觉得改变占空比的取值应该也可以实现,让我来试试
回复 支持 反对

使用道具 举报

37

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
717
金钱
717
注册时间
2016-6-10
在线时间
191 小时
发表于 2016-11-3 21:13:39 | 显示全部楼层
周亚龙 发表于 2016-11-3 16:23
楼主说的很对,但是我觉得改为PW1模式呼吸灯常亮还有一个很重要的原因是原子哥PWM占空比的设置并不是从0~10 ...

经过测试,只改动为PWM1模,然后调占空比的值为600~900;可以实现同样的效果
回复 支持 1 反对 0

使用道具 举报

7

主题

54

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1028
金钱
1028
注册时间
2015-12-8
在线时间
447 小时
发表于 2017-2-5 16:31:14 | 显示全部楼层
不错学习了
回复 支持 反对

使用道具 举报

1

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2017-2-9
在线时间
19 小时
发表于 2017-2-14 10:17:58 | 显示全部楼层
我来补充一下自己的看法,自己再学的时候也不怎么明白PWM的原理,后来又看参考手册,对楼主的内容补充一下:
脉冲宽度调制模式可以产生一个由TIMx_ARR(自动装载)寄存器确定频率。由TIMx_CRRx(捕获/比较)寄存器确定占空比的信号。
也就是说TIMx_CNT计数器从初始值开始递增或递减,其中的值会一直跟TIMx_CCRx比较,当计数器中的值比CCR中的值大会改变电平,当计数器中的值等于最大值
时会重现装载入初值,并且继续递增或者递减。

向上计数
PWM模式1  当TIMx_CNT<TIMx_CCRx时PWM参考信号OCxREF为高,否则为低。
如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持1.如果比较值为0,则OCxREF保持为0.

向下计数
在PWM模式1,当TIMx_CNT>TIMx_CCRx时参考信号OCxREF为低,否则为高。如果TIMx_CCRx中的比较值大于TIMx_ARR中的自动重装载值,则OCxREF保持为’1’。该模式下不
能产生0%的PWM波形。
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
402
金钱
402
注册时间
2016-12-10
在线时间
73 小时
发表于 2017-2-17 01:24:55 | 显示全部楼层
学习啦
回复 支持 反对

使用道具 举报

8

主题

145

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2016-12-14
在线时间
75 小时
发表于 2017-2-17 08:25:33 | 显示全部楼层
顶,收藏了
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2015-12-11
在线时间
22 小时
发表于 2017-2-17 09:16:48 | 显示全部楼层
主要是搞懂TIM_OCMode与TIM_OCPolarity的配合使用就可以正常控制占空比了而不是控制相反的占空比
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-30
在线时间
0 小时
发表于 2017-2-28 22:08:34 | 显示全部楼层
可是为什么仅仅将PWM2改为PWM1上电后灯会常亮?而不是从亮逐渐变暗再从暗逐渐变亮?
珍惜你所拥有的,因为你终将失去!
回复 支持 3 反对 0

使用道具 举报

28

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2017-2-13
在线时间
110 小时
发表于 2017-3-7 11:22:03 | 显示全部楼层
实用,精辟,mark
回复 支持 反对

使用道具 举报

1

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2017-2-9
在线时间
27 小时
发表于 2017-3-7 15:41:19 | 显示全部楼层
想搞清楚库函数到底做了些什么还是得对照着库函数的代码看手册里的库函数说明
回复 支持 反对

使用道具 举报

7

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-10-20
在线时间
74 小时
发表于 2017-3-9 22:21:53 | 显示全部楼层
刘凯 老师的32课程  对于PWM的解释也不错的,,,可以了解了解。。
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-1-9
在线时间
15 小时
发表于 2017-3-10 09:11:20 | 显示全部楼层
谢谢分享,学习学习
回复 支持 反对

使用道具 举报

2

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
509
金钱
509
注册时间
2016-11-16
在线时间
111 小时
发表于 2017-3-10 10:18:27 | 显示全部楼层
这个只把PWM2改成了PWM1的话 LED灯是从亮边暗  led0pwmval即空占比就变成LCD灯的暗度  空占比越大则LED越暗  程序中的led0pwmval上限太小  从而看不出LED亮度的变化
回复 支持 反对

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-11 14:01:35 | 显示全部楼层
谢谢分享,学习ing
回复 支持 反对

使用道具 举报

0

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2015-10-15
在线时间
39 小时
发表于 2017-3-22 12:24:38 | 显示全部楼层
本帖最后由 jpaekeo 于 2017-3-22 12:50 编辑

战舰板的LED是低电平亮,而刚开始CCR2寄存器的值为0,TIMx_CNT>=TIMx_CCR2,OC2REF输出1对应的OC2输出高电平,会看到刚开始上电,LED灯由不亮逐渐变来亮的现象
虽然介绍的不全,常用的有疑惑的函数都介绍了,不错
回复 支持 反对

使用道具 举报

10

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
279
金钱
279
注册时间
2017-3-27
在线时间
66 小时
发表于 2017-3-27 09:53:44 | 显示全部楼层
简单明了,谢谢 有帮助
回复 支持 反对

使用道具 举报

163

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1214
金钱
1214
注册时间
2016-5-19
在线时间
297 小时
发表于 2017-3-27 11:01:41 | 显示全部楼层
定时器的捕获比较寄存器,它在输入时用于存储输入脉冲在电平发生翻转时脉冲计数器TIMx_CNT的当前计数值,从而实现脉冲的频率测量.
我不明白为什么知道了输入信号脉冲计数就实现了脉冲的频率测量.
回复 支持 反对

使用道具 举报

剽悍一只猫 该用户已被删除
发表于 2017-4-6 16:43:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-8-7
在线时间
11 小时
发表于 2017-10-11 19:22:35 | 显示全部楼层
electric405 发表于 2013-10-22 22:03
发一个自己写的SPWM
//主函数
#include&quot;delay.h&quot;
#include&quot;sys.h&quot;
#include&quot;math.h&quot;
u16&nbsp; ...

我之前也写过,sintable用公式算会很慢的,导致频率不对了,只能用查表法了
回复 支持 反对

使用道具 举报

10

主题

43

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-10-17
在线时间
29 小时
发表于 2018-10-20 16:21:23 | 显示全部楼层
恍然大悟
回复 支持 反对

使用道具 举报

0

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
184
金钱
184
注册时间
2018-6-17
在线时间
57 小时
发表于 2019-1-22 19:41:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2020-1-17
在线时间
9 小时
发表于 2020-1-19 00:29:51 | 显示全部楼层
请问如果改成PWM1模式,开始和CCR0=0比较时确实是高电平,那之后不应该是高电平占空比越来越小,低电平占空比越来越多吗,为什么不是由亮变暗而是常亮呢?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2020-1-17
在线时间
9 小时
发表于 2020-1-19 00:34:45 | 显示全部楼层
请问如果改成PWM1模式,开始和CCR0=0比较时确实是高电平,那之后不应该是高电平占空比越来越小,低电平占空比越来越多吗,为什么不是由亮变暗而是常亮呢?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2020-1-17
在线时间
9 小时
发表于 2020-1-19 00:38:51 | 显示全部楼层
请问如果改成PWM1模式,开始和CCR0=0比较时确实是高电平,然后增加CCR0,那之后不应该是高电平占空比越来越小,低电平占空比越来越多吗,为什么不是由亮变暗而是常亮呢?
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2019-7-23
在线时间
22 小时
发表于 2020-1-20 00:47:43 | 显示全部楼层
请问这是向上计数还是向下计数?没下f1的代码,应该是向下计数吧,设置的led0pwmval作TIMx_CCR1,使用PWM2时是TIMx_CNT>TIMx_CCR1时通道1为有效电平,因为这里CC1P应该是配置为0的,所以无效电平是OC1REF=0,有效电平是OC1REF=1,这些都能理解,但如果都是其他没动的话,应该是不符合“PWM模式1- 在向上(应该是向下吧)计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平”
回复 支持 反对

使用道具 举报

0

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2014-9-18
在线时间
21 小时
发表于 2020-5-9 17:05:11 | 显示全部楼层
非常详细,受教了!
回复 支持 反对

使用道具 举报

0

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2020-5-8
在线时间
11 小时
发表于 2020-5-9 20:02:18 | 显示全部楼层
谢谢楼主分享心得
回复 支持 反对

使用道具 举报

0

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2020-5-8
在线时间
11 小时
发表于 2020-5-9 20:03:45 | 显示全部楼层
谢谢楼主分享心得
回复 支持 反对

使用道具 举报

3

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2020-3-27
在线时间
52 小时
发表于 2020-9-3 14:19:14 | 显示全部楼层
谢谢楼主答疑解惑!!!!
回复 支持 反对

使用道具 举报

4

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2020-11-24
在线时间
32 小时
发表于 2020-12-24 14:43:03 | 显示全部楼层
mark  
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 13:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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