OpenEdv-开源电子网

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

在关TIM2做PWM输出时的一个设置问题

[复制链接]

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
发表于 2016-10-14 15:19:35 | 显示全部楼层 |阅读模式
6金钱
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2,ENABLE);

上面红色的地方,换成GPIO_PartialRemap2_TIM2,有什么区别。

TIM2_CH2对应PA1,TIM2_CH3对应PA3。
附上我的代码。若是配置上面那个,则PA1有PWM输出,若是改成另一个,则PA2有输出,就是不 出现同时有输出的情况

void BRIDGE_TIM2_init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能定时器3时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟

GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO


TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down;  //TIM向上计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
//
TIM_OC2Init(TIM2, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM2 OC1
TIM_OC3Init(TIM2, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM2 OC2

TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);  //使能TIM2在CCR1上的预装载寄存器
TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);  //使能TIM2在CCR2上的预装载寄存器

TIM_Cmd(TIM2, ENABLE);  //使能TIM2

}



最佳答案

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

这两个IO默认就是在TIM2的CH2/CH3上,不需要重映射哦。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-10-14 15:19:36 | 显示全部楼层
这两个IO默认就是在TIM2的CH2/CH3上,不需要重映射哦。
回复

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
 楼主| 发表于 2016-10-15 08:15:34 | 显示全部楼层
正点原子 发表于 2016-10-14 17:55
这两个IO默认就是在TIM2的CH2/CH3上,不需要重映射哦。

谢谢原子哥,昨天自己也试出来了。0.0
回复

使用道具 举报

14

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2015-5-25
在线时间
39 小时
发表于 2016-10-17 18:28:38 | 显示全部楼层
沉默焚烧 发表于 2016-10-15 08:15
谢谢原子哥,昨天自己也试出来了。0.0

楼主 , 需要改下哪里才可以同时输出吗??????
回复

使用道具 举报

14

主题

81

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2015-5-25
在线时间
39 小时
发表于 2016-10-17 18:49:52 | 显示全部楼层
楼主怎么分别设置CH2和CH3的PWM占空比
我用TIM_SetCompare2(TIM2,20);       
TIM_SetCompare3(TIM2,10);         设置  ,, 可是他们输出大小一样啊
回复

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
 楼主| 发表于 2016-10-18 08:07:39 | 显示全部楼层
小小小小电子 发表于 2016-10-17 18:49
楼主怎么分别设置CH2和CH3的PWM占空比
我用TIM_SetCompare2(TIM2,20);       
TIM_SetCompare3(TIM2,10);         设置 ...

PWM输出模式,这样做,是不一样的呀
回复

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
 楼主| 发表于 2016-10-18 08:08:12 | 显示全部楼层
小小小小电子 发表于 2016-10-17 18:28
楼主 , 需要改下哪里才可以同时输出吗??????

如原子哥所 说,把那句重映射的,去掉就可以了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 01:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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