OpenEdv-开源电子网

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

pwm

[复制链接]

25

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2015-9-5
在线时间
48 小时
发表于 2016-3-17 17:20:23 | 显示全部楼层 |阅读模式
请问    TIM_SetCompare2改变占空比不是改变参数TIM_Pulse么?
请问TIM_Pulse是不是设置改变占空比的比较值的啊?在网上看到:
TIM_Pulse之前提到的定时器暂停。我更喜欢称他为定时器跳变,当计数器CNT中的值小于它的值时,输出为有效电平,即为之前配置的高电平,当达到跳变值时输出跳变(下跳)。它与TIM_Period共同决定了PWM波的占空比。占空比=( TIM_Pulse/ ( TIM_Period + 1 ) ) *100%。比如我要产生一个50%的=PWM,只需要将TIM_Period设置成999,TIM_Pulse设置成500即可。在前半个周期计数器值达不到TIM_Pulse,故一直输出高电平,当达到TIM_Pulse时刻输出值下跳为低电平,然后再次计数半个周期。当这个周期走完时,ARR恰好溢出(其内装入的值为TIM_Period ),然后计数器清零,再次计数,重复上述过程,即产生了PWM波。

既然这样为什么原子的代码里设置为0呢?TIM_SetCompare2()函数是怎么工作的啊?
   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_Pulse = 0;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
    TIM_OC2Init(TIM1, &TIM_OCInitStructure);  




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

使用道具 举报

5

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2015-12-26
在线时间
54 小时
发表于 2016-3-17 17:32:18 | 显示全部楼层
TIM_Pulse是关于占空比的,TIM_SetCompare2可以动态改变占空比TIM_SetCompare2(TIM1,X)就是改变TIM1 通道2的占空比。
回复 支持 反对

使用道具 举报

25

主题

101

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
224
金钱
224
注册时间
2015-9-5
在线时间
48 小时
 楼主| 发表于 2016-3-18 14:52:53 | 显示全部楼层
zhangyimj007 发表于 2016-3-17 17:32
TIM_Pulse是关于占空比的,TIM_SetCompare2可以动态改变占空比TIM_SetCompare2(TIM1,X)就是改变TIM1 通 ...

谢谢啦
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 22:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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