GD32F207VC开发板输出异常未出现互补PWM波形

2019-07-15 07:48发布

本人使用GD32F207VC开发板无法输出互补PWM波形。程序使用高级定时器时钟1,将PA8和PB11设为互补PWM输出引脚。具体程序如下。请各位帮我看一下。谢谢!程序编译无措。
  1. #include "gd32f20x.h"
  2. #include <stdio.h>
  3. #include "systick.h"

  4. int compare ;


  5. void TIM8_init()
  6. {
  7.    TIMER_BaseInitPara tim1_int;// ʱÖÓ1³õʼ»¯
  8.          TIMER_BKDTInitPara tim1_DT; //ʱÖÓ1ËÀÇøʱ¼ä
  9.          TIMER_OCInitPara   tim1_OC; // ʱÖÓ1ͨµÀÉèÖÃ
  10.    tim1_int.TIMER_Period = 1200;// 120Mʱ¿ª¹ØƵÂÊ100k
  11.          tim1_int.TIMER_Prescaler = 0;//¶¨Ê±Æ÷ʱÖÓΪ120M
  12.    tim1_int.TIMER_ClockDivision = TIMER_CDIV_DIV1;//¶¨Ê±Æ÷ʱÖÓΪ120M
  13.          tim1_int.TIMER_CounterMode = TIMER_COUNTER_UP;//ÏòÉϼÆÊý
  14.          TIMER_BaseInit(TIMER1,&tim1_int);
  15.          
  16.          //ÅäÖÃËÀÇøʱ¼ä  ËÀÇøΪ0.1us
  17.          
  18.    tim1_DT.TIMER_ROSState = TIMER_ROS_STATE_ENABLE;
  19.          tim1_DT.TIMER_IOSState = TIMER_IOS_STATE_ENABLE;
  20.          tim1_DT.TIMER_LOCKLevel = TIMER_LOCK_LEVEL_OFF;
  21.          tim1_DT.TIMER_DeadTime = 12;
  22.          tim1_DT.TIMER_Break = TIMER_BREAK_DISABLE;
  23.          tim1_DT.TIMER_BreakPolarity = TIMER_BREAK_POLARITY_LOW;
  24.          tim1_DT.TIMER_OutAuto = TIMER_OUTAUTO_DISABLE ;
  25.    TIMER_BKDTConfig(TIMER1,&tim1_DT);
  26.          
  27.          //ÉèÖÃͨµÀ1£¬Í¨µÀ1N
  28.          
  29.          tim1_OC.TIMER_OCMode = TIMER_OC_MODE_PWM1;//¼ÆÊýֵСÓÚÉ趨ֵΪÓÐЧµçƽ
  30.          tim1_OC.TIMER_OutputState = TIMER_OUTPUT_STATE_ENABLE;//Êä³ö±È½ÏʹÄÜ
  31.          tim1_OC.TIMER_OutputNState = TIMER_OUTPUTN_STATE_ENABLE;//Êä³ö±È½Ï·´ÏòʹÄÜ
  32.          tim1_OC.TIMER_Pulse = compare;//±È½ÏÖµ
  33.         tim1_OC.TIMER_OCPolarity = TIMER_OC_POLARITY_HIGH;//ÓÐЧµçƽΪ¸ßµçƽ
  34.          tim1_OC.TIMER_OCNPolarity = TIMER_OCN_POLARITY_HIGH;//ÓÐЧµçƽΪ¸ßµçƽ
  35.          tim1_OC.TIMER_OCIdleState = TIMER_OC_IDLE_STATE_SET;//¿ÕÏÐʱÒý½Å״̬
  36.         tim1_OC.TIMER_OCNIdleState = TIMER_OCN_IDLE_STATE_RESET;//¿ÕÏÐʱÒý½Å×´
  37.    TIMER_OC1_Init(TIMER1,&tim1_OC);
  38.          TIMER_OC1_Preload(TIMER1,TIMER_OC_PRELOAD_ENABLE);//×Ô¶¯×°ÔØʹÄÜ

  39.    TIMER_Enable(TIMER1,ENABLE);
  40.          TIMER_CtrlPWMOutputs(TIMER1,ENABLE);//¿ªÆôON£¬OCÊä³ö£¨BDTR£©
  41. //        TIMER_CC_PreloadControl(TIMER1,ENABLE);
  42. }


  43. void  PWM_GPIO_init()
  44. {
  45.    GPIO_InitPara GPIO_InitPara;
  46.          RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_TIMER1,ENABLE);
  47.          RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOA | RCC_APB2PERIPH_GPIOB, ENABLE);
  48.          GPIO_InitPara.GPIO_Pin = GPIO_PIN_8;
  49.          GPIO_InitPara.GPIO_Mode = GPIO_MODE_AF_PP;
  50.          GPIO_InitPara.GPIO_Speed = GPIO_SPEED_50MHZ;
  51.          GPIO_Init(GPIOA,&GPIO_InitPara);//ÅäÖÃPA7Ϊ¸´ÓÃÍÆÍì TM8-CH1N
  52.    GPIO_InitPara.GPIO_Pin = GPIO_PIN_13;
  53.          GPIO_InitPara.GPIO_Mode = GPIO_MODE_AF_PP;
  54.          GPIO_InitPara.GPIO_Speed = GPIO_SPEED_50MHZ;
  55.    GPIO_Init(GPIOB,&GPIO_InitPara);//ÅäÖÃPC6Ϊ¸´ÓÃÍÆÍì TM8-CH1

  56. }

  57. int main(void)
  58. {
  59.          compare = 800;
  60.          TIM8_init();
  61.          PWM_GPIO_init();
  62.          
  63.          while(1)
  64.          {
  65.      compare = 800;
  66.                  TIMER_Compare1Config(TIMER1,compare);
  67.          
  68.          }
  69.      
  70. }
复制代码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。