OpenEdv-开源电子网

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

pwm输出,瞬间改变占空比,波形异常。

[复制链接]

24

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2016-1-15
在线时间
64 小时
发表于 2016-3-9 08:39:03 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 Anthony_brave 于 2016-3-9 08:41 编辑

原程序:if(Sys_P.Time==100)                                {
                TIM3_PWM1(3000);
           }
          if(Sys_P.Time==0)
          {
                TIM3_PWM1(8000);     //改变pwm输出占空比
                Sys_P.Time=200;
          }

出现的波形如图所示

当程序改为
           if(Sys_P.Time==100)         
          {
                 delay_ms(2);
                TIM3_PWM1(3000);
           }
          if(Sys_P.Time==0)
          {
                delay_ms(2);
                TIM3_PWM1(8000);     //改变pwm输出占空比
                Sys_P.Time=200;
          }

    波形就不会出现像图中那样的异常了



QQ图片20160309083638.png
QQ图片20160309083651.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

58

帖子

0

精华

高级会员

Rank: 4

积分
542
金钱
542
注册时间
2016-2-24
在线时间
61 小时
发表于 2016-3-9 09:33:59 | 显示全部楼层
CCMR寄存器的PE位置1了吗?
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-3-9 09:57:41 | 显示全部楼层
我记到有一个寄存器位
是控制在当时就改变占空比
还是本周期结束后在改变

你可以找到试试
回复

使用道具 举报

24

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2016-1-15
在线时间
64 小时
 楼主| 发表于 2016-3-9 10:02:25 | 显示全部楼层
shark_32 发表于 2016-3-9 09:33
CCMR寄存器的PE位置1了吗?

ccmr寄存器是 捕获/比较模式寄存器

我程序里面pwm输出使用的是pwm模式。所以和CCMR寄存器有关吗
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-3-9 10:06:39 | 显示全部楼层
Anthony_brave 发表于 2016-3-9 10:02
ccmr寄存器是 捕获/比较模式寄存器

我程序里面pwm输出使用的是pwm模式。所以和CCMR寄存器有关吗

PWM就是比较
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

24

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2016-1-15
在线时间
64 小时
 楼主| 发表于 2016-3-9 10:18:45 | 显示全部楼层
shark_32 发表于 2016-3-9 09:33
CCMR寄存器的PE位置1了吗?

看了一眼,置1了
回复

使用道具 举报

24

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2016-1-15
在线时间
64 小时
 楼主| 发表于 2016-3-9 10:21:06 | 显示全部楼层
止天 发表于 2016-3-9 09:57
我记到有一个寄存器位
是控制在当时就改变占空比
还是本周期结束后在改变

就是楼上说的那个寄存器吗?

OC1PE:输出比较1预装载使能 (Output Compare 1 preload enable)
0:禁止TIMx_CCR1寄存器的预装载功能,可随时写入TIMx_CCR1寄存器,并且新写入的数值立即起作用。
1:开启TIMx_CCR1寄存器的预装载功能,读写操作仅对预装载寄存器操作,TIMx_CCR1的预装载值在更新事件到来时被加载至当前寄存器中。
回复

使用道具 举报

24

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2016-1-15
在线时间
64 小时
 楼主| 发表于 2016-4-15 15:09:17 | 显示全部楼层


回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 13:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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