OpenEdv-开源电子网

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

有没有方法实现高级定时器的PWM模式1和PWM模式2之间的来回切换

[复制链接]

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
发表于 2020-11-15 21:00:49 | 显示全部楼层 |阅读模式
10金钱

最佳答案

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

切换是可以的, 只不过要先disable后才能改另一个pwm模式, 之后再使能。 中间这段几个微秒的时间就看你能否接受
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2020-11-15 21:00:50 | 显示全部楼层
切换是可以的, 只不过要先disable后才能改另一个pwm模式, 之后再使能。 中间这段几个微秒的时间就看你能否接受
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4947
金钱
4947
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-11-16 11:01:09 | 显示全部楼层
需要重新配置
回复

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2020-11-16 11:46:43 | 显示全部楼层
在你切的点重新配置
回复

使用道具 举报

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
 楼主| 发表于 2020-11-16 13:05:07 | 显示全部楼层

了解了,谢谢回复
回复

使用道具 举报

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
 楼主| 发表于 2020-11-16 13:05:29 | 显示全部楼层
awsawzj 发表于 2020-11-16 11:46
在你切的点重新配置

了解了,谢谢回复
回复

使用道具 举报

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
 楼主| 发表于 2020-11-16 15:56:45 | 显示全部楼层
edmund1234 发表于 2020-11-16 12:13
切换是可以的, 只不过要先disable后才能改另一个pwm模式, 之后再使能。 中间这段几个微秒的时间就看你能 ...

如果只改PWM模式,需要失能哪一部分呢,还是要全部重新执行?
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2020-11-16 16:38:38 | 显示全部楼层
zhuanjiaox1996 发表于 2020-11-16 15:56
如果只改PWM模式,需要失能哪一部分呢,还是要全部重新执行?

TIM1->CR1 &= ~(u32)TIM_CR1_CEN;
TIM1->CCMR1 ^= TIM_CCMR1_OC1M_0;                                        // 这是只改了CH1
TIM1->CR1 |= TIM_CR1_CEN;

如果需要两个通道就把第二条换成这一句
TIM1->CCMR1 ^= TIM_CCMR1_OC1M_0|TIM_CCMR1_OC2M_0;    // 这是改了CH1 & CH2
回复

使用道具 举报

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
 楼主| 发表于 2020-11-16 19:32:13 | 显示全部楼层
edmund1234 发表于 2020-11-16 16:38
TIM1->CR1 &= ~(u32)TIM_CR1_CEN;
TIM1->CCMR1 ^= TIM_CCMR1_OC1M_0;                                  ...

虽然对寄存器的程序不太懂,感谢大佬的回复,这个是修改PWM模式的程序吗,还是输出失能的程序
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2020-11-16 19:36:22 | 显示全部楼层
zhuanjiaox1996 发表于 2020-11-16 19:32
虽然对寄存器的程序不太懂,感谢大佬的回复,这个是修改PWM模式的程序吗,还是输出失能的程序

失能+转换+使能, 都在这三句里
回复

使用道具 举报

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
 楼主| 发表于 2020-11-16 19:39:09 | 显示全部楼层
edmund1234 发表于 2020-11-16 19:36
失能+转换+使能, 都在这三句里

明白了,非常感谢,祝您生活愉快
回复

使用道具 举报

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
 楼主| 发表于 2020-11-16 19:45:39 | 显示全部楼层
zhuanjiaox1996 发表于 2020-11-16 19:39
明白了,非常感谢,祝您生活愉快

不好意思大佬,多问个问题TIM_CCMR1_OC1M_1与 TIM_CCMR1_OC1M_2是分别对应PWM模式1与模式2吗,实在对寄存器程序不太了解
回复

使用道具 举报

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
 楼主| 发表于 2020-11-16 19:46:07 | 显示全部楼层
edmund1234 发表于 2020-11-16 19:36
失能+转换+使能, 都在这三句里

不好意思大佬,多问个问题TIM_CCMR1_OC1M_1与 TIM_CCMR1_OC1M_2是分别对应PWM模式1与模式2吗,实在对寄存器程序不太了解
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2020-11-16 21:46:31 | 显示全部楼层
zhuanjiaox1996 发表于 2020-11-16 19:46
不好意思大佬,多问个问题TIM_CCMR1_OC1M_1与 TIM_CCMR1_OC1M_2是分别对应PWM模式1与模式2吗,实在对寄存 ...

TIM1->CCMR1 的Bit 6:4  = 110 (PWM Mode 1) = 111(PWM Mode 2)
而两个值的差别只在 Bit 4,  TIM_CCMR1_OC1M_0 = (1<<4), 所以异或 TIM1->CCMR1 的Bit 4, 就可以轮替的切换 PWM Mode 1 及 2 。

那就是当你初始时是设置在PWM Mode 1, 执行这三句后就会切换至 Mode 2, 再一次执行这三句又会切换回 Mode 1, 。。。。。。。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2020-11-17 11:16:29 | 显示全部楼层
zhuanjiaox1996 发表于 2020-11-16 19:46
不好意思大佬,多问个问题TIM_CCMR1_OC1M_1与 TIM_CCMR1_OC1M_2是分别对应PWM模式1与模式2吗,实在对寄存 ...

昨晚回了你的, 被审了

简单的说一下吧, TIM_CCMR1_OC1M 在TIM->CCMR1的Bit 6:4, 当其值为110 时是Mode , 为111时是 Mode2,  Mode 0 & 1的差别只在 TIM->CCMR1的Bit 4, 所以每次取反 TIM->CCMR1的Bit 4就可以切换PWM模式。
简单而言就是每执行这三含一次就切换一次。
回复

使用道具 举报

7

主题

36

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-10-29
在线时间
23 小时
 楼主| 发表于 2020-11-17 11:53:33 | 显示全部楼层
edmund1234 发表于 2020-11-17 11:16
昨晚回了你的, 被审了

简单的说一下吧, TIM_CCMR1_OC1M 在TIM->CCMR1的Bit 6:4, 当其值为110 时是Mo ...

明白了,非常感谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 12:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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