OpenEdv-开源电子网

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

一个定时器产生多通道PWM波问题?

[复制链接]

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-4-25
在线时间
16 小时
发表于 2016-4-26 15:52:42 | 显示全部楼层 |阅读模式
1金钱
一个定时器,比如TIM3可以配置输出4个通道的PWM波。怎么分别控制着4个通道,比如在程序中先使能TIM3_CH1,再关闭通道1,让通道2 产生PWM波,怎么能做到?

最佳答案

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

CCER寄存器,好好看看吧,每个通道的使能开关就在这里了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-4-26 15:52:43 | 显示全部楼层
CCER寄存器,好好看看吧,每个通道的使能开关就在这里了
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11569
金钱
11569
注册时间
2014-4-1
在线时间
1320 小时
发表于 2016-4-26 16:01:27 | 显示全部楼层

每个通道都有自己的开关。

回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-4-26 16:17:39 | 显示全部楼层
设置占空比啊。。。
回复

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-4-25
在线时间
16 小时
 楼主| 发表于 2016-4-26 16:30:20 | 显示全部楼层
365mcu 发表于 2016-4-26 16:17
设置占空比啊。。。

可以这样通过占空比设置吗,但是你不知道那时候的IO口是高电平还是低电平吧?
回复

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-4-25
在线时间
16 小时
 楼主| 发表于 2016-4-26 16:30:52 | 显示全部楼层
xuande 发表于 2016-4-26 16:01
每个通道都有自己的开关。

有吗,能不能把那个函数发出来看看
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-4-26 16:43:36 | 显示全部楼层
kaiyuan123 发表于 2016-4-26 16:30
有吗,能不能把那个函数发出来看看

[mw_shl_code=c,true]/**
  * @brief  Sets the TIMx Capture Compare1 Register value
  * @param  TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral.
  * @param  Compare1: specifies the Capture Compare1 register new value.
  * @retval None
  */
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1)
{
  /* Check the parameters */
  assert_param(IS_TIM_LIST8_PERIPH(TIMx));
  /* Set the Capture Compare1 Register value */
  TIMx->CCR1 = Compare1;
}[/mw_shl_code]
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-4-26 16:44:37 | 显示全部楼层
kaiyuan123 发表于 2016-4-26 16:30
可以这样通过占空比设置吗,但是你不知道那时候的IO口是高电平还是低电平吧?

怎么不知道?100%输出是不是高电平?0%输出是不是低电平?
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-4-26 16:44:57 | 显示全部楼层
TIMx_CCER寄存器的CCnE(n=1234)位,有时候查寄存器比找函数快
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-4-26 16:47:00 | 显示全部楼层
365mcu 发表于 2016-4-26 16:43
[mw_shl_code=c,true]/**
  * @brief  Sets the TIMx Capture Compare1 Register value
  * @param  TI ...

你这个是设置CCR比较捕获寄存器的函数吧
回复

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-4-25
在线时间
16 小时
 楼主| 发表于 2016-4-26 17:08:58 | 显示全部楼层
365mcu 发表于 2016-4-26 16:43
[mw_shl_code=c,true]/**
  * @brief  Sets the TIMx Capture Compare1 Register value
  * @param  TI ...

设置占空比这个我试了可以,不过你贴这个代码不是PWM波输出的吧?
回复

使用道具 举报

2

主题

391

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1957
金钱
1957
注册时间
2014-8-8
在线时间
307 小时
发表于 2016-4-26 17:33:56 | 显示全部楼层
kaiyuan123 发表于 2016-4-26 17:08
设置占空比这个我试了可以,不过你贴这个代码不是PWM波输出的吧?

我就用的这个函数,就是设置重新装载值的也就是重置占空比的。
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-4-26 17:36:15 | 显示全部楼层
设置好ARR寄存器,就是这个定时器的周期,也就是你的PWM的频率,然后设置你想要的pwm模式,然后设置不同通道的CCR寄存器,就是设置你的占空比,然后开启通道,开启输出就可以了
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-4-26 17:40:36 | 显示全部楼层
多了解下寄存器,别只看固件库,固件库里面的函数也都是操作寄存器的
回复

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-4-25
在线时间
16 小时
 楼主| 发表于 2016-4-27 10:18:52 | 显示全部楼层
八度空间 发表于 2016-4-26 23:34
CCER寄存器,好好看看吧,每个通道的使能开关就在这里了

恩,解决了,配置一下寄存器就可以了。
回复

使用道具 举报

6

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-4-25
在线时间
16 小时
 楼主| 发表于 2016-4-27 10:19:07 | 显示全部楼层
配置CCER寄存器就行了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-10 01:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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