OpenEdv-开源电子网

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

如何让一个PWM在另一个PWM的上升沿输出

[复制链接]

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
发表于 2014-3-24 10:14:36 | 显示全部楼层 |阅读模式
 


我想让第二个波在第一个波的上升沿输出,应该怎样设置啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-24 10:34:12 | 显示全部楼层
我设置了DIR位不管用啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-24 12:21:12 | 显示全部楼层
DIR不是控制这个的吧。。。
再好好研究下定时器,你这应该是2个定时器吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-24 15:52:56 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
是两个定时器,都工作在从模式。能试的应该都试过了。原子哥能提供点思路吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-24 18:57:41 | 显示全部楼层
回复【4楼】luckywwq:
---------------------------------
那就是3个定时器?1个主,2个从?
你这两个波,来自两个从定时器?
那你控制输出波形的时间就可以了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-25 08:18:31 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
对,是来自两个从定时器。
应该怎么控制输出波形的时间啊,这个也能控制?是设置寄存器还是直接delay呢?直接delay好像不行,没什么变化
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-25 15:37:44 | 显示全部楼层
回复【6楼】luckywwq:
---------------------------------
都是从0开始计数,PWM输出时间不就是同步的么?
比如一旦CNT等于0,就是出高电平,这个时候2个定时器都应该输出高电平
然后等于CCRx的时候取反,A定时器高电平长一些,设置ARRA=ARRB>CCRxA>CCRxB>0,就可以产生高电平同步,频率一致,而占空比不同的两路PWM了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-26 08:40:54 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
但这样不是只是让第二个波的高电平时间延长了吗?它并不会整体向左移动,第二个波的下降沿还是在第一个波的下降沿到来啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-27 00:35:24 | 显示全部楼层
回复【8楼】luckywwq:
---------------------------------
2个是同步的啊。高电平应该同时出现,然后控制1个的高电平长一点,另外一个短一点,就是你要的效果了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-27 15:50:24 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
原子哥,我按你的那个设置改了,还是不对啊。ARRA=ARRB=71,CCR1A=64,CCR1B=60
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-27 16:44:37 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
我能不能直接在程序里把两个波进行逻辑运算,比如相与,然后输出
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-27 23:45:44 | 显示全部楼层
回复【11楼】luckywwq:
---------------------------------
波形在代码里面如何与啊?
回复【10楼】luckywwq:
---------------------------------
出来什么效果?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-28 08:26:55 | 显示全部楼层


回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-28 08:27:23 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
如上图所示
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-29 00:30:34 | 显示全部楼层
回复【14楼】luckywwq:
---------------------------------
搞成下降沿同步了,设置下输出极性,就可以了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-3-31 08:30:21 | 显示全部楼层
回复【15楼】正点原子:
---------------------------------
是设置GPIOB->ODR|=1<<7这个吗?还是改PWM波的输出极性呢?TIM4->CCMR1|=7<<12
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-3-31 19:43:44 | 显示全部楼层
回复【16楼】luckywwq:
---------------------------------
都不是。
是CCER寄存器,控制极性的。CC1P/CC2P/CC3P之类的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

47

主题

360

帖子

0

精华

高级会员

Rank: 4

积分
726
金钱
726
注册时间
2014-3-6
在线时间
19 小时
发表于 2014-4-8 19:35:25 | 显示全部楼层
回复【17楼】正点原子:
---------------------------------
原子哥,问你个问题,假如我想控制一个寄存器里面的一个位,我怎样去查控制这一位的函数?例如我想控制CCER寄存器中的CC1P,我怎样去查控制CC1P的函数?
成长不是衣服越来越小,裤子越来越短,而是心和梦想一起越来越大!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-8 20:34:20 | 显示全部楼层
回复【18楼】ljjdglg520:
---------------------------------
这个非常简单了...
多看看我们的代码吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

47

主题

360

帖子

0

精华

高级会员

Rank: 4

积分
726
金钱
726
注册时间
2014-3-6
在线时间
19 小时
发表于 2014-4-8 21:21:02 | 显示全部楼层
回复【19楼】正点原子:
---------------------------------
问题就是你写的代码不可能用到所有的函数吧,很多寄存器中的某些位都没有,例如现在在弄pwm实验,我就找不到怎样关闭某一路的PWM,要上论坛、上网查,怎样控制TIMx_CR1中的APRE应该也没有吧,输出多个通道的pwm用到的输出比较也没有吧。。。有些东西我想学深入一点嘛,不知道怎样查那些函数呀- -
成长不是衣服越来越小,裤子越来越短,而是心和梦想一起越来越大!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-8 22:44:37 | 显示全部楼层
回复【20楼】ljjdglg520:
---------------------------------
这个当然,你要什么就有什么的唯一办法:就是找个人专门帮你写代码。
否则,你只能这里找找,哪里看看,或者自己努力写代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-15 10:53:01 | 显示全部楼层
回复【17楼】正点原子:
---------------------------------
原子哥,我将TIM3->CCER&=~(1<<5);改成了TIM3->CCER|=1<<5;结果图变成了下面的样子了
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-15 10:53:40 | 显示全部楼层

如图
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-15 10:54:43 | 显示全部楼层
回复【17楼】正点原子:
---------------------------------
为什么总是以下降沿为基准呢?
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-15 10:56:00 | 显示全部楼层
难道是跟工作在从模式有关吗?
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-15 11:22:39 | 显示全部楼层
回复【19楼】正点原子:
---------------------------------
原子哥,终于解决了!! 加一句TIM3->CR1|=1<<4;就行了
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-15 11:23:26 | 显示全部楼层

还不错
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-15 18:39:28 | 显示全部楼层
回复【27楼】luckywwq:
---------------------------------
恭喜
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-16 08:42:00 | 显示全部楼层
回复【28楼】正点原子:
---------------------------------
原子哥,现在我想让一个通道在上升沿输出高,另一个通道在下降沿输出高,可是好像两个通道是相同变化的,要么同时在上升沿要么同时在下降沿。后来我用TIM3的CH1,TIM4CH1分开来用,可是还是同时变化的。能提供点思路吗?
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-16 08:44:49 | 显示全部楼层

就是要把这两个合并到一起
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-16 15:08:36 | 显示全部楼层
回复【30楼】luckywwq:
---------------------------------
3个输出通道?CH1/CH2/CH3?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
689
金钱
689
注册时间
2014-3-4
在线时间
96 小时
 楼主| 发表于 2014-4-17 08:28:08 | 显示全部楼层
回复【31楼】正点原子:
---------------------------------
是的。但是好像每一个通道的输出都是一致的,要么都在上升沿要么都在下降沿。怎么能单独控制每一个通道的输出呢?我在CCMR寄存器里改了没用,我分别用两个定时器,输出还是一致的。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-17 22:15:35 | 显示全部楼层
关闭某个通道的输出很好做啊, 
TIM3->CCER|=1<<4;    //OC2 输出使能
看到这句了么?
把设置1,改为清零,就禁止输出了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-11-9
在线时间
1 小时
发表于 2015-8-7 21:10:48 | 显示全部楼层
你好,能看看你的配置吗?861963602@qq.com
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 23:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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