OpenEdv-开源电子网

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

PWM输出这一例程中,有个疑惑

[复制链接]

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
发表于 2016-4-27 19:45:01 | 显示全部楼层 |阅读模式
1金钱
file:///C:/Users/admin10/AppData/Roaming/Tencent/Users/373265562/QQ/WinTemp/RichOle/S]M1)XZMNS3O8S%60FBS6$4%256.png
里面改变led0pwmval的值来改变占空比,这个占空比到底是百分之多少,怎么算的?求前辈告知。
`E0KIEG4SAF`H6H3T`N3IBV.png

最佳答案

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

这个PWM初始化的函数是TIM3_PWM_Init(u16 arr,u16 psc); 如果没改动例程的话 输出的PWM频率=72000000/【(arr+1)*(psc+1)】Hz 输出的PWM占空比=((arr+1)-led0pwmval)/arr *100% 至于led0pwmval是什么鬼,打开那个timer.h ,例程里把TIM3->CCR1(就是定时器3的PWM通道1)赋了个名叫led0pwmval。 也就是说每个PWM输出通道的输出PWM波占空比=((arr+1)-TIMx->CCRx)/arr *100% 比如,你要输出一个占空比50%。 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-4-27
在线时间
0 小时
发表于 2016-4-27 19:45:02 | 显示全部楼层
这个PWM初始化的函数是TIM3_PWM_Init(u16 arr,u16 psc);

如果没改动例程的话
输出的PWM频率=72000000/【(arr+1)*(psc+1)】Hz
输出的PWM占空比=((arr+1)-led0pwmval)/arr  *100%

至于led0pwmval是什么鬼,打开那个timer.h  ,例程里把TIM3->CCR1(就是定时器3的PWM通道1)赋了个名叫led0pwmval。

也就是说每个PWM输出通道的输出PWM波占空比=((arr+1)-TIMx->CCRx)/arr *100%

比如,你要输出一个占空比50%。把while(1)里的全部删掉,只写
led0pwmval=450;
那输出的占空比就是恒定值=(900-450)/900 *100%=50%

这是个人经验,在哪里看到的忘了,如果还不明白也没法说了
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2016-4-28 00:19:09 | 显示全部楼层
默认向上计数的方式,占空比=TIMx->CCRx/TIMx->ARR*100%
回复

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
 楼主| 发表于 2016-4-28 07:48:53 | 显示全部楼层
菜鸟12号 发表于 2016-4-27 19:45
这个PWM初始化的函数是TIM3_PWM_Init(u16 arr,u16 psc);

如果没改动例程的话

谢谢,明白了。太详细了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-16 08:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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