为什么stm32f429不能输出pwm波形

2019-07-14 19:29发布

新手,为什么STM32f429就是不能输出pwm波形 ,检查了好多遍就是找不到问题,怎么办 ??  是我配置出问题了吗??代码如下,有大神能指教一下吗,
        GPIO_InitTypeDef GPIO_InitStructure;
        tiM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;

           

        RCC_AHB1PeriphClockCmd ( RCC_AHB1Periph_GPIOA, ENABLE);
        RCC_AHB1PeriphClockCmd ( RCC_APB1Periph_TIM2, ENABLE);

                /*  */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;        
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;   
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);        
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
        GPIO_Init(GPIOA, &GPIO_InitStructure);        
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM2);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_TIM2);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_TIM2);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_TIM2);
        
        TIM_TimeBaseStructure.TIM_Period = (1000000-1);                                              //µ±¶¨Ê±Æ÷´Ó0¼ÆÊýµ½ TIM_Period+1 £¬ÎªÒ»¸ö¶¨Ê±ÖÜÆÚ
        TIM_TimeBaseStructure.TIM_Prescaler = 17;                                    //ÉèÖÃÔ¤·ÖƵ
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;        //ÉèÖÃʱÖÓ·ÖƵϵÊý£º²»·ÖƵ(ÕâÀïÓò»µ½)
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //ÏòÉϼÆÊýģʽ
         
        // ³õʼ»¯¶¨Ê±Æ÷TIMx, x[2,3,4,5]
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);        
        
        /*PWMģʽÅäÖÃ*/
        /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //ÅäÖÃΪPWMģʽ1
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        //ʹÄÜÊä³ö
  TIM_OCInitStructure.TIM_Pulse = 0;                                                                                                          //ÉèÖóõʼPWMÂö³å¿í¶ÈΪ0        
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //µ±¶¨Ê±Æ÷¼ÆÊýֵСÓÚCCR1_ValʱΪµÍµçƽ LEDµÆÁÁ
        
        //ʹÄÜͨµÀ1
        TIM_OC1Init(TIM2, &TIM_OCInitStructure);         
  /*ʹÄÜͨµÀÖØÔØ*/
        TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);
        
        //ʹÄÜͨµÀ2
        TIM_OC2Init(TIM2, &TIM_OCInitStructure);         
  /*ʹÄÜͨµÀÖØÔØ*/
        TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);


        //ʹÄÜͨµÀ3
        TIM_OC3Init(TIM2, &TIM_OCInitStructure);         
  /*ʹÄÜͨµÀÖØÔØ*/
        TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);
        
        //ʹÄÜͨµÀ4
        TIM_OC4Init(TIM2, &TIM_OCInitStructure);         
  /*ʹÄÜͨµÀÖØÔØ*/
        TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);

        
        
TIM_CtrlPWMOutputs(TIM2, ENABLE);
        // ¿ªÆô¼ÆÊýÆ÷ÖжÏ
        //TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
        
        // ʹÄܼÆÊýÆ÷
        TIM_Cmd(TIM2, ENABLE);        
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
机器人工作者
1楼-- · 2019-07-15 04:16
中断函数有吗~最好把文件都发出来看看~
CDX520
2楼-- · 2019-07-15 08:56
机器人工作者 发表于 2017-6-14 22:58
中断函数有吗~最好把文件都发出来看看~

没有用到中断,这段代码只是通用定时器输出四路pwm波的初始化,但是我用示波器根本检测不到波形,检查了好久都没查出问题,你帮我看看这段代码的初始化配置哪里不对,万分感谢
CDX520
3楼-- · 2019-07-15 14:10
CDX520 发表于 2017-6-14 22:42
各位大神帮忙看一下,真的很感谢,检查了好久都找不出问题

。。
为我所望
4楼-- · 2019-07-15 15:17
 精彩回答 2  元偷偷看……
烦恼乌托邦
5楼-- · 2019-07-15 19:02
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL
这个nopull改成pullup试下看

一周热门 更多>