你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32使用TIM1进行互补PWM输出时,示波器观察出两个波形

[复制链接]
june0929520 提问时间:2018-1-10 21:09 /
如题我使用的STM32F103RCT6,使用高级定时器TIM1进行PWM输出,PWM输出设置为周期设置100um,脉宽为50%。用示波器观察到两个波形,波形照片如下:

这个是正常波形,周期和脉宽和我设置的一致

这个是正常波形,周期和脉宽和我设置的一致

上面这个波形的周期、脉宽和我设置的周期脉宽是一致的,但我将示波器时间调为1s,就出现如下的波形,这不是我想要的不知道为什么?

我将示波器周期调为1s,就出现这样的波形,不知道为什么

我将示波器周期调为1s,就出现这样的波形,不知道为什么

示波器时间为1S,就出现这样一个波形,这是为什么?这个波形周期为3S,脉宽也是50%。

如果我调整上面波形的占空比,下面的波形也会随着变化。可是我程序中就没有配置第二个这个波形,不知道从哪里来的。另外我将IO口上接上一个LED灯,灯也是一闪一闪的,并不是变暗。

各位大神,请问我这是什么情况???下面代码是我的配置代码。

void TIM1_Configuration(void)
        {
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

        /* Time base configuration */
        TIM_TimeBaseStructure.TIM_Period = 7200-1; //         10K
        TIM_TimeBaseStructure.TIM_Prescaler =0;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
        TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
       
        /* Output Compare Active Mode configuration: Chan.ynel1 */
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable ;
        TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
        TIM_OCInitStructure.TIM_Pulse = 0;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
        TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
        TIM_OCInitStructure.TIM_OCIdleState =TIM_OCIdleState_Set;
        TIM_OCInitStructure.TIM_OCNIdleState =TIM_OCNIdleState_Reset;
        TIM_OC1Init(TIM1, &TIM_OCInitStructure);  
        TIM_OC2Init(TIM1, &TIM_OCInitStructure);
        TIM_OC3Init(TIM1, &TIM_OCInitStructure);

  TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_Enable;           
  TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Enable;        
  TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_OFF;              
  TIM_BDTRInitStructure.TIM_DeadTime=0Xab;                                             
  TIM_BDTRInitStructure.TIM_Break=TIM_Break_Disable;                          
  TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakPolarity_Low;   
  TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Disable;
  TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);
  TIM_CtrlPWMOutputs(TIM1,ENABLE);        
        TIM_ARRPreloadConfig(TIM1, ENABLE);
       
        /* TIM1 enable counter */
        TIM_Cmd(TIM1, ENABLE);  
        }

//PWM输出使用的是如下代码:
                TIM_SetCompare1(TIM1,3600);
                TIM_SetCompare2(TIM1,3600);       
                TIM_SetCompare3(TIM1,3600);       


收藏 评论1 发布时间:2018-1-10 21:09

举报

1个回答
努力的人 回答时间:2018-1-11 09:55:32
你参照野火的例程做就可以了,你的程序的问题,我以前配置过6路互补PWM都没问题

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版