OpenEdv-开源电子网

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

TIM3 PWM输出配置问题

[复制链接]

38

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2013-8-19
在线时间
0 小时
发表于 2013-9-15 23:12:21 | 显示全部楼层 |阅读模式
//使用TIM3_CH1 PB4复用输出PWM,可是实现不了,配置文件时哪里有问题呢

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

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    //使能定时器3时钟
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟
   
    GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH1->B4  
 
   //设置该引脚为复用输出功能,输出TIM3 CH1的PWM脉冲波形    GPIOB.4
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //TIM_CH1
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
 
   //初始化TIM3
    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_Up;  //TIM向上计数模式
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
   
    //初始化TIM3 Channel1 PWM模式     
    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_OC1Init(TIM3, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC1

    TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR1上的预装载寄存器
 
    TIM_Cmd(TIM3, ENABLE);  //使能TIM3
   

}
 
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

38

主题

128

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2013-8-19
在线时间
0 小时
 楼主| 发表于 2013-9-16 10:16:42 | 显示全部楼层
回复【2楼】正点原子:

回复【楼主位】liyuanmrwhite:
---------------------------------
先关闭JTAG.

----------------------------
应该还是配置的问题,
回复 支持 反对

使用道具 举报

3

主题

34

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2013-9-9
在线时间
0 小时
发表于 2013-9-23 23:55:36 | 显示全部楼层
@正点原子 
原子哥,TIM3_CH1 B4复用输出PWM,我的做法跟他一样并且拿杜邦线把PB4和PB5连起来了,可还是实现不了啊,配置哪出错了呢?
回复 支持 反对

使用道具 举报

3

主题

34

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2013-9-9
在线时间
0 小时
发表于 2013-9-24 00:09:17 | 显示全部楼层
看了相关的帖子 把j-tag关闭可也不行的哇~
回复 支持 反对

使用道具 举报

3

主题

34

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2013-9-9
在线时间
0 小时
发表于 2013-9-24 00:20:21 | 显示全部楼层
软件仿出来了,这里需要修改
         //TIM_SetCompare2(TIM3,led0pwmval);
TIM_SetCompare1(TIM3,led0pwmval);
但down到开发板中,灯不亮啊,杜邦线短接PB4、PB5,难道不能短接?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-24 10:21:20 | 显示全部楼层
回复【6楼】E-angel:
---------------------------------
你的PB5设置为什么输出?推挽?
如果是推挽,并且输出1,那么你觉得PWM输出,能把它拉低么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

34

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2013-9-9
在线时间
0 小时
发表于 2013-9-26 23:29:19 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
PB5我没去设置啊 我只是设置了PB4啊
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //TIM_CH1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO

Ps:不设置应该是floating的状态吧?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-27 00:01:12 | 显示全部楼层
回复【8楼】E-angel:
---------------------------------
其他地方呢?
比如LED_Init函数,有没有用啊?
仿真看看寄存器状态!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

34

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2013-9-9
在线时间
0 小时
发表于 2013-9-27 00:21:35 | 显示全部楼层
LED.c里的对PB5的初始化已经被我注视掉了,仿真也发现PB5是floating的状态~求解释!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-27 11:22:09 | 显示全部楼层
那就没影响,PB4输出的PWM,接到PB5上,肯定可以输出。只要你能确保PB5是浮空输入。
另外,还要看看外部有没有可以影像到PB5电平的东西!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-10-23
在线时间
0 小时
发表于 2013-10-23 22:46:31 | 显示全部楼层
回复【楼主位】liyuanmrwhite:
---------------------------------
问一下你的问题解决了吗  我的也是出现一样的问题   ??????急求
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2021-7-15
在线时间
2 小时
发表于 2021-8-23 17:17:15 | 显示全部楼层
你的问题解决了?,我也遇到了同样的问题
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 19:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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