• 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 【人事】中共临汾市委组织部公示3名拟任职干部 2019-03-07
  • 这泼猴,物理。古文,哲学,基础语文,那一项没出丑?看着就想笑 2019-02-20
  • 云南理发店老板涉嫌杀害女演员因办卡纠纷起杀心 2019-02-20
  • 1至5月我区为企业和社会减负4200余万元 2019-02-09
  • 【学习时刻】参会专家盛小云:坚定文化自信,用高尚的作品引领社会风尚 2019-01-28
  • 绘就生态文明新画卷—甘南州造林绿化工作纪实 2019-01-28
  • 某些人总是用“客观事实”来为自己壮胆,实际上根本不懂什么是“客观事实。 2019-01-12
  • 圣洁的雪山文章中国国家地理网 2018-11-22
  • 崇尚英雄 精忠报国——我们家的报国故事 2018-11-22
  • 618史上最壕“买家”现身 Google以 5.5亿美元投资京东 2018-11-21
  • 看好啦!是时候表演真正的技术了 2018-11-21
  • 日本大阪6.1级地震已致4人死亡 370多人受伤 2018-11-20
  • 打印

    广东11选5预测: GD32F207VC开发板无法输出互补PWM波形

    [复制链接]
    392|12
    跳转到指定楼层
    楼主
     楼主 | 2018-11-14 19:05 | 只看该作者 |退出气泡模式 回帖奖励 |倒序浏览 |阅读模式
    本人使用GD32F207VC开发板无法输出互补PWM波形。程序使用高级定时器时钟1,将PA8和PB11设为互补PWM输出引脚。具体程序如下。请各位帮我看一下。谢谢!程序编译无措。

    #include "gd32f20x.h"
    #include <stdio.h>
    #include "systick.h"

    int compare ;


    void TIM8_init()
    {
      TIMER_BaseInitPara tim1_int;// ê±?ó13?ê??ˉ
            TIMER_BKDTInitPara tim1_DT; //ê±?ó1?à??ê±??
            TIMER_OCInitPara   tim1_OC; // ê±?ó1í¨μàéè??
      tim1_int.TIMER_Period = 1200;// 120Mê±?a1??μ?ê100k
            tim1_int.TIMER_Prescaler = 0;//?¨ê±?÷ê±?ó?a120M
      tim1_int.TIMER_ClockDivision = TIMER_CDIV_DIV1;//?¨ê±?÷ê±?ó?a120M
            tim1_int.TIMER_CounterMode = TIMER_COUNTER_UP;//?òé???êy
            TIMER_BaseInit(TIMER1,&tim1_int);
           
            //?????à??ê±??  ?à???a0.1us
           
      tim1_DT.TIMER_ROSState = TIMER_ROS_STATE_ENABLE;
            tim1_DT.TIMER_IOSState = TIMER_IOS_STATE_ENABLE;
            tim1_DT.TIMER_LOCKLevel = TIMER_LOCK_LEVEL_OFF;
            tim1_DT.TIMER_DeadTime = 12;
            tim1_DT.TIMER_Break = TIMER_BREAK_DISABLE;
            tim1_DT.TIMER_BreakPolarity = TIMER_BREAK_POLARITY_LOW;
            tim1_DT.TIMER_OutAuto = TIMER_OUTAUTO_DISABLE ;
      TIMER_BKDTConfig(TIMER1,&tim1_DT);
           
            //éè??í¨μà1£?í¨μà1N
           
            tim1_OC.TIMER_OCMode = TIMER_OC_MODE_PWM1;//??êy?μD?óúéè?¨?μ?aóDD§μ???
            tim1_OC.TIMER_OutputState = TIMER_OUTPUT_STATE_ENABLE;//ê?3?±è??ê1?ü
            tim1_OC.TIMER_OutputNState = TIMER_OUTPUTN_STATE_ENABLE;//ê?3?±è??·′?òê1?ü
            tim1_OC.TIMER_Pulse = compare;//±è???μ
            tim1_OC.TIMER_OCPolarity = TIMER_OC_POLARITY_HIGH;//óDD§μ????a??μ???
            tim1_OC.TIMER_OCNPolarity = TIMER_OCN_POLARITY_HIGH;//óDD§μ????a??μ???
            tim1_OC.TIMER_OCIdleState = TIMER_OC_IDLE_STATE_SET;//???Dê±òy??×′ì?
            tim1_OC.TIMER_OCNIdleState = TIMER_OCN_IDLE_STATE_RESET;//???Dê±òy??×′
      TIMER_OC1_Init(TIMER1,&tim1_OC);
            TIMER_OC1_Preload(TIMER1,TIMER_OC_PRELOAD_ENABLE);//×??ˉ×°??ê1?ü

      TIMER_Enable(TIMER1,ENABLE);
            TIMER_CtrlPWMOutputs(TIMER1,ENABLE);//?a??ON£?OCê?3?£¨BDTR£?
    //        TIMER_CC_PreloadControl(TIMER1,ENABLE);
    }


    void  PWM_GPIO_init()
    {
      GPIO_InitPara GPIO_InitPara;
            RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_TIMER1,ENABLE);
            RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOA | RCC_APB2PERIPH_GPIOB, ENABLE);
            GPIO_InitPara.GPIO_Pin = GPIO_PIN_8;
            GPIO_InitPara.GPIO_Mode = GPIO_MODE_AF_PP;
            GPIO_InitPara.GPIO_Speed = GPIO_SPEED_50MHZ;
            GPIO_Init(GPIOA,&GPIO_InitPara);//????PA7?a?′ó?í?íì TM8-CH1N
      GPIO_InitPara.GPIO_Pin = GPIO_PIN_13;
            GPIO_InitPara.GPIO_Mode = GPIO_MODE_AF_PP;
            GPIO_InitPara.GPIO_Speed = GPIO_SPEED_50MHZ;
      GPIO_Init(GPIOB,&GPIO_InitPara);//????PC6?a?′ó?í?íì TM8-CH1

    }

    int main(void)
    {
            compare = 800;
            TIM8_init();
            PWM_GPIO_init();
           
            while(1)
            {
        compare = 800;
                    TIMER_Compare1Config(TIMER1,compare);
           
            }
       
    }


    沙发
     楼主 | 2018-11-15 18:35 | 只看该作者
    chenyilin 发表于 2018-11-15 12:14
    您好,这是对于PA8,PB11 这两个引脚在207中 的功能 , 您可以去查看datasheet

    PA8是TM1的1通道啊。程序用的是PB13,上面文字写错了。PB13是TM1的1N通道啊。有什么设置问题吗?谢谢!
    板凳
     楼主 | 2018-11-15 21:02 | 只看该作者
    本帖最后由 xiaobai032 于 2018-11-15 21:29 编辑
    chenyilin 发表于 2018-11-15 19:20
    PB11 和PA8,一个是CH1,一个是CH4,他们只是能输出PWM ,不代表能输出互补通道,对于互补通道的引脚说明应 ...

    是PB13,不是PB11.PB13是CH1N

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    地板
    | 2018-11-16 10:20 | 只看该作者
    xiaobai032 发表于 2018-11-15 21:02
    是PB13,不是PB11.PB13是CH1N

    您好,您可以到官网上下载最新的关于207的datasheet,上面有做标明,




    如果您使用的是TIM1 那么修改为timer 0 试试。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    5
     楼主 | 2018-11-16 20:41 | 只看该作者
    本帖最后由 xiaobai032 于 2018-11-16 20:51 编辑
    chenyilin 发表于 2018-11-16 10:20
    您好,您可以到官网上下载最新的关于207的datasheet,上面有做标明,

    您好,我用的是跟板子一起提供的库函数??夂惺敝又挥?到14.没有时钟0.那应该怎么办。你提供的图应该时钟编号为0-13.与我的库函数不符?怎么办?改为timer0直接报错。


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    6
    | 2018-11-20 11:33 | 只看该作者
    我这边按照您的库 改了一个代码 你测试一下;

    /* Includes ------------------------------------------------------------------*/
    #include <gd32f20x.h>
    #include "systick.h"
    #include <stdio.h>

    /* Private function prototypes -----------------------------------------------*/
    void RCC_Configuration(void);
    void GPIO_Configuration(void);
    void TIM_Configuration(void);

    /* Private functions ---------------------------------------------------------*/
    /**
      * @brief  Configure system clocks.
      * @param  None
      * @retval None
      */
    void RCC_Configuration(void)
    {
        /* GPIOA, GPIOB, GPIOC and AF clocks enable */
        RCC_APB2PeriphClock_Enable( RCC_APB2PERIPH_GPIOA | RCC_APB2PERIPH_GPIOB |
                                    RCC_APB2PERIPH_GPIOC | RCC_APB2PERIPH_AF, ENABLE);
    }

    /**
      * @brief  Configure the GPIO ports.
      * @param  None
      * @retval None
      */
    void GPIO_Configuration(void)
    {
        GPIO_InitPara GPIO_InitStructure;

        /* Configure PC7 as PP output */
        GPIO_InitStructure.GPIO_Pin   = GPIO_PIN_7;
        GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_OUT_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
        GPIO_Init(GPIOC,&GPIO_InitStructure);

        /* Configure PA8 PA9 PA10(TIMER1 CH1 CH2 CH3) as alternate function */
        GPIO_InitStructure.GPIO_Pin   = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10;
        GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
        GPIO_Init(GPIOA,&GPIO_InitStructure);

        /* Configure PB13 PB14 PB15(TIMER1 CH1N CH2N CH3N) as alternate function */
        GPIO_InitStructure.GPIO_Pin   = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
        GPIO_InitStructure.GPIO_Mode  = GPIO_MODE_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
    }

    /**
      * @brief  Configure the TIMER peripheral.
      * @param  None
      * @retval None
      */
    void TIM_Configuration(void)
    {
    /* -----------------------------------------------------------------------
        TIMER1 Configuration to:
        Generate 3 complementary PWM signals with 3 different duty cycles:
        TIMER1CLK is fixed to SystemCoreClock, the TIMER1 Prescaler is equal
        to 6000 so the TIMER1 counter clock used is 20KHz.

        The Three Duty cycles are computed as the following description:
        The channel 1 duty cycle is set to 25% so channel 1N is set to 75%.
        The channel 2 duty cycle is set to 50% so channel 2N is set to 50%.
        The channel 3 duty cycle is set to 75% so channel 3N is set to 25%.
      ----------------------------------------------------------------------- */
        TIMER_BaseInitPara TIM_TimeBaseStructure;
        TIMER_OCInitPara  TIM_OCInitStructure;

        /* TIMER1 clock enable */
        RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_TIMER1, ENABLE);

        /* TIMER1  configuration */
        TIMER_DeInit(TIMER1);
        TIM_TimeBaseStructure.TIMER_Prescaler     = 5999;
        TIM_TimeBaseStructure.TIMER_CounterMode   = TIMER_COUNTER_UP;
        TIM_TimeBaseStructure.TIMER_Period        = 15999;
        TIM_TimeBaseStructure.TIMER_ClockDivision = TIMER_CDIV_DIV1;
        TIMER_BaseInit(TIMER1,&TIM_TimeBaseStructure);

        /* CH1,CH2 and CH3 Configuration in PWM mode */
        TIM_OCInitStructure.TIMER_OCMode       = TIMER_OC_MODE_PWM1;
        TIM_OCInitStructure.TIMER_OCPolarity   = TIMER_OC_POLARITY_HIGH;
        TIM_OCInitStructure.TIMER_OCNPolarity  = TIMER_OCN_POLARITY_HIGH;
        TIM_OCInitStructure.TIMER_OutputState  = TIMER_OUTPUT_STATE_ENABLE;
        TIM_OCInitStructure.TIMER_OutputNState = TIMER_OUTPUTN_STATE_ENABLE;
        TIM_OCInitStructure.TIMER_OCIdleState  = TIMER_OC_IDLE_STATE_RESET;
       
        TIM_OCInitStructure.TIMER_Pulse = 3999;
        TIMER_OC1_Init(TIMER1, &TIM_OCInitStructure);
        TIMER_OC1_Preload(TIMER1,TIMER_OC_PRELOAD_DISABLE);
       
        TIM_OCInitStructure.TIMER_Pulse = 7999;
        TIMER_OC2_Init(TIMER1, &TIM_OCInitStructure);
        TIMER_OC2_Preload(TIMER1,TIMER_OC_PRELOAD_DISABLE);

        TIM_OCInitStructure.TIMER_Pulse = 11999;
        TIMER_OC3_Init(TIMER1, &TIM_OCInitStructure);
        TIMER_OC3_Preload(TIMER1,TIMER_OC_PRELOAD_DISABLE);

        /* TIMER1 output enable */
        TIMER_CtrlPWMOutputs(TIMER1,ENABLE);
        /* Auto-reload preload enable */
        TIMER_CARLPreloadConfig(TIMER1,ENABLE);
        /* TIMER enable counter*/
        TIMER_Enable( TIMER1, ENABLE );
    }

    /**
      * @brief  Main program.
      * @param  None
      * @retval None
      */
    int main()
    {
        RCC_Configuration();
        GPIO_Configuration();
        SysTick_Configuration();
        TIM_Configuration();

        while(1)
        {
            GPIO_SetBits(GPIOC,GPIO_PIN_7);
            Delay_1ms(1000);
            GPIO_ResetBits(GPIOC, GPIO_PIN_7);
            Delay_1ms(1000);
        }
    }

    这是测试PA8 -PB13引脚的波形图


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    7
    | 2018-11-20 18:23 | 只看该作者
    kkkkk
    8
    | 2018-11-20 18:23 | 只看该作者
    9
     楼主 | 2018-11-20 19:49 | 只看该作者
    chenyilin 发表于 2018-11-20 11:33
    我这边按照您的库 改了一个代码 你测试一下;

    /* Includes -------------------------------------------- ...

    问题已经找到,万分感谢??!因为我的gpio配置中含有rcc时钟设置,里面开启了timer1时钟。但在main函数中把gpio函数放在了timer1设置函数之后。将两个函数位置颠倒,就有输出了。是不是timer1的rcc时钟不开,配置不了timer1?
    10
    | 2018-11-22 10:19 | 只看该作者
    xiaobai032 发表于 2018-11-20 19:49
    问题已经找到,万分感谢??!因为我的gpio配置中含有rcc时钟设置,里面开启了timer1时钟。但在main函数中 ...

    嗯嗯~ 真棒。你说的是对的
    11
    | 2018-11-25 10:46 | 只看该作者
    这个跟定时器的应用有关的
    12
    | 2018-11-30 21:41 | 只看该作者
    xiaobai032 发表于 2018-11-20 19:49
    问题已经找到,万分感谢??!因为我的gpio配置中含有rcc时钟设置,里面开启了timer1时钟。但在main函数中 ...

    原来是这样,我也是听你说的才反应过来了,确实是这个问题。
    13
    | 2018-11-30 21:41 | 只看该作者
    chenyilin 发表于 2018-11-22 10:19
    嗯嗯~ 真棒。你说的是对的

    初始化的时候一定要注意的。
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    快速回复 广东快乐十分走势图 返回列表
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 【人事】中共临汾市委组织部公示3名拟任职干部 2019-03-07
  • 这泼猴,物理。古文,哲学,基础语文,那一项没出丑?看着就想笑 2019-02-20
  • 云南理发店老板涉嫌杀害女演员因办卡纠纷起杀心 2019-02-20
  • 1至5月我区为企业和社会减负4200余万元 2019-02-09
  • 【学习时刻】参会专家盛小云:坚定文化自信,用高尚的作品引领社会风尚 2019-01-28
  • 绘就生态文明新画卷—甘南州造林绿化工作纪实 2019-01-28
  • 某些人总是用“客观事实”来为自己壮胆,实际上根本不懂什么是“客观事实。 2019-01-12
  • 圣洁的雪山文章中国国家地理网 2018-11-22
  • 崇尚英雄 精忠报国——我们家的报国故事 2018-11-22
  • 618史上最壕“买家”现身 Google以 5.5亿美元投资京东 2018-11-21
  • 看好啦!是时候表演真正的技术了 2018-11-21
  • 日本大阪6.1级地震已致4人死亡 370多人受伤 2018-11-20