查看: 241|回复: 8
收起左侧

GD32F105VCT6芯片定时器8通道3的PWM输出

[复制链接]
     

1

主题

4

帖子

12

积分

实习生

 楼主| 发表于 2017-8-8 10:13 | 显示全部楼层 |返回版面|阅读模式
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_TIMER8, ENABLE);
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOC , ENABLE);
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_AF , ENABLE);

void TIM8_GPIO_Configuration(void)
{
        GPIO_InitPara GPIO_InitStructure;

        /* PC8设置为功能脚(PWM) */
        GPIO_InitStructure.GPIO_Pin = CHARGE_PWM_PIN;
        GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;

        GPIO_Init(CHARGE_PWM_PORT, &GPIO_InitStructure);
}


void TIM8_PWM_Configuration(void)
{
        TIMER_BaseInitPara TIMER_TimeBaseStructure;
        TIMER_OCInitPara TIMER_OCInitStructure;

    /* TIMER8  configuration */
    TIMER_DeInit(TIMER8);
    //TIMERxCLK = SystemCoreClock / 72 = 1MHz
    TIMER_TimeBaseStructure.TIMER_Prescaler     = 71;
    TIMER_TimeBaseStructure.TIMER_CounterMode   = TIMER_COUNTER_UP;
    //TIMERx Period 10000 (1MHz / 10000 = 100Kz)
    TIMER_TimeBaseStructure.TIMER_Period        = 9999;
    TIMER_TimeBaseStructure.TIMER_ClockDivision = TIMER_CDIV_DIV1;
    TIMER_BaseInit(TIMER8,&TIMER_TimeBaseStructure);

    /* CHx Configuration in PWM mode */
    TIMER_OCInitStructure.TIMER_OCMode      = TIMER_OC_MODE_PWM1;
    TIMER_OCInitStructure.TIMER_OCPolarity  = TIMER_OC_POLARITY_HIGH;
    TIMER_OCInitStructure.TIMER_OutputState = TIMER_OUTPUT_STATE_ENABLE;
    TIMER_OCInitStructure.TIMER_OCIdleState = TIMER_OC_IDLE_STATE_RESET;

    //TIMERx Channel3 duty cycle = (2500 / 10000) * 100 = 25%
    TIMER_OCInitStructure.TIMER_Pulse = 2499;
    TIMER_OC3_Init(TIMER8, &TIMER_OCInitStructure);
    TIMER_OC3_Preload(TIMER8,TIMER_OC_PRELOAD_DISABLE);

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


上面的代码有哪出问题?

在引脚上没有PWM输出
     

1

主题

4

帖子

12

积分

实习生

 楼主| 发表于 2017-8-8 15:54 | 显示全部楼层 |返回版面
GD32用的人很少吗?问题都没法解决。
     

3

主题

38

帖子

105

积分

中级技术员

发表于 2017-8-8 20:36 | 显示全部楼层 |返回版面
xinuaile2012 发表于 2017-8-8 15:54
GD32用的人很少吗?问题都没法解决。

从谁那申请的样品,找 对应售后
     

1

主题

4

帖子

12

积分

实习生

 楼主| 发表于 2017-8-9 11:35 | 显示全部楼层 |返回版面
找了售后,还是没有解决。
     

0

主题

6

帖子

18

积分

实习生

发表于 2017-8-14 13:27 | 显示全部楼层 |返回版面
还是用STM32的吧,GD的代理只顾着推销芯片,不管技术支持

0

主题

41

帖子

123

积分

中级技术员

发表于 2017-8-15 14:52 | 显示全部楼层 |返回版面
带刹车功能的定时器需要调用下面这个函数后才会有PWM输出
void TIMER_CtrlPWMOutputs( TIMER_TypeDef* TIMERx , TypeState NewValue )
     

1

主题

4

帖子

12

积分

实习生

 楼主| 发表于 2017-9-25 14:45 | 显示全部楼层 |返回版面
最后直接换成Timer3来实现。
     

0

主题

72

帖子

234

积分

中级技术员

发表于 2017-9-27 16:59 | 显示全部楼层 |返回版面
高级定时器1和8要加上。TIM_CtrlPWMOutputs(TIM1, ENABLE);
     

0

主题

72

帖子

234

积分

中级技术员

发表于 2017-9-27 17:11 | 显示全部楼层 |返回版面
有问题可以找FAE  375880228。
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

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