OpenEdv-开源电子网

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

TIM1产生PWM时的一个怪异问题

[复制链接]

9

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2011-10-21
在线时间
4 小时
发表于 2012-5-31 09:47:21 | 显示全部楼层 |阅读模式
我想使用STM32的TIM1在通道2、3、4上产生三路PWM信号,TIM1_Configuration()如下,用的是TIM_SetCompare2(TIM1, VOL_1);    TIM_SetCompare3(TIM1, VOL_2);   TIM_SetCompare4(TIM1, VOL_P);  其中的VOL_1、VOL_2、VOL_P都是变量,实际测试发现当三个变量都取最大时,通道2、3正常输出最高电压,但通道4却输出最低电压,将变量都取最小时,2、3正常输出最小电压,4却输出最高电压,也就是说通道4和通道2、3刚好输出是反的,问题这是出在了哪里?求帮助



void TIM1_Configuration(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_TimeBaseStructure.TIM_Period = 100;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC2Init(TIM1, &TIM_OCInitStructure);
TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);

        TIM_OC3Init(TIM1, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);

        TIM_OC4Init(TIM1, &TIM_OCInitStructure);
TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);

TIM_ARRPreloadConfig(TIM1, ENABLE);
TIM_Cmd(TIM1, ENABLE);
        TIM1->BDTR |= 1<<15;
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

9

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2011-10-21
在线时间
4 小时
 楼主| 发表于 2012-5-31 11:19:29 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
单个输出通道4就是反的,但2、3正常,费解....而且当:
只使能通道2时,通道3电压3.3,通道4电压为0;;;
只使能通道3时,通道2电压为0,通道4电压3.3;;;
只使能通道4时,通道2、3电压都是0...

快疯了...

我的IO配置如下

 //设置Pluse_VolCom Lis1_VolCom Lis2_VolCom增益放大电压引脚
 GPIO_InitStructure.GPIO_Pin = luse_VolCom_Pin | Lis1_VolCom_Pin | Lis2_VolCom_Pin;               
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-5-31 12:26:22 | 显示全部楼层
回复【3楼】城南小卒:
---------------------------------
对这个放大电压引脚,表示不解...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2011-10-21
在线时间
4 小时
 楼主| 发表于 2012-5-31 19:45:39 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
那原子哥您单看TIM1的配置有问题么?我这是实在没办法了才上网找您问问的,那个注释您就无视了吧,你就看看这个TIM1的配置跟GPIO的配置会对TIM1的通道4产生我一开始所说的那影响么?谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-5-31 22:42:00 | 显示全部楼层
看着挺正常.不过我也没有一次用一个定时器输出这么多PWM过...所以没遇到你这种情况.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2011-10-21
在线时间
4 小时
 楼主| 发表于 2012-6-1 08:54:28 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
嗯,不管怎样都先谢谢原子哥了,我自己再试试吧
回复 支持 反对

使用道具 举报

39

主题

160

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2014-1-9
在线时间
8 小时
发表于 2014-5-30 09:31:37 | 显示全部楼层
请问,楼主解决了吗?我也聚到了这样的问题,我用了4路,可第一路不管怎么设置都没有输出,其他三路也是这种情况?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 12:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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