搜索

请教GD32F303Rxx,Timer0,启动死区就无波形输出。谢谢

[复制链接]
133|6
 楼主 | 2021-4-19 18:33 | 显示全部楼层 |阅读模式
void timer0_config(void)
{
    /* -----------------------------------------------------------------------
    TIMER0 configuration:
    generate 1 complementary PWM signal.
    TIMER0CLK is fixed to systemcoreclock, the TIMER0 prescaler is equal to 120 so the
    TIMER0 counter clock used is 1MHz.
    the duty cycle is computed as the following description:
    the channel 0 duty cycle is set to 25% so channel 0N is set to 75%.

    insert a dead time equal to ((32+31)*16*4)/systemcoreclock = 33.6us

    configure the break feature, active at high level, and using the automatic
    output enable feature.

    use the locking parameters level1.
    ----------------------------------------------------------------------- */
    timer_oc_parameter_struct                 timer_ocintpara;
    timer_parameter_struct                                 timer_initpara;
    timer_break_parameter_struct         timer_breakpara;
       
                dma_config();
       
          rcu_periph_clock_enable(RCU_TIMER0);
                rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_AF);

    /*configure PA8(TIMER0 CH0) as alternate function*/
    gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_8);

    /*configure PB13(TIMER0 CH0N) as alternate function*/
    gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_13);

   

    timer_deinit(TIMER0);

    /* TIMER0 configuration */
    timer_initpara.prescaler         = 0;
    timer_initpara.alignedmode       = TIMER_COUNTER_CENTER_BOTH;//TIMER_COUNTER_EDGE;
    timer_initpara.counterdirection  = TIMER_COUNTER_UP;
    timer_initpara.period            = 1250;                                // 24KHz
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
    timer_initpara.repetitioncounter = 0;
    timer_init(TIMER0,&timer_initpara);

    /* CH0/CH0N configuration in PWM mode0 */
    timer_ocintpara.outputstate  = TIMER_CCX_ENABLE;
    timer_ocintpara.outputnstate = TIMER_CCXN_ENABLE;
    timer_ocintpara.ocpolarity   = TIMER_OC_POLARITY_HIGH;
    timer_ocintpara.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;
    timer_ocintpara.ocidlestate  = TIMER_OC_IDLE_STATE_HIGH;
    timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;

    timer_channel_output_config(TIMER0,TIMER_CH_0,&timer_ocintpara);

    timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_0,BufferSPWM[0]);
    timer_channel_output_mode_config(TIMER0,TIMER_CH_0,TIMER_OC_MODE_PWM0);
    timer_channel_output_shadow_config(TIMER0,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);

    /* automatic output enable, break, dead time and lock configuration         启用死区功能,无波形输出
    timer_breakpara.runoffstate      = TIMER_ROS_STATE_DISABLE;
    timer_breakpara.ideloffstate     = TIMER_IOS_STATE_DISABLE ;
    timer_breakpara.deadtime         = 100;
    timer_breakpara.breakpolarity    = TIMER_BREAK_POLARITY_LOW;
    timer_breakpara.outputautostate  = TIMER_OUTAUTO_ENABLE;
    timer_breakpara.protectmode      = TIMER_CCHP_PROT_0;
    timer_breakpara.breakstate       = TIMER_BREAK_ENABLE;
    timer_break_config(TIMER0,&timer_breakpara);                        */

    /* TIMER0 primary output function enable */
    timer_primary_output_config(TIMER0,ENABLE);
               
                /* TIMER0 update DMA request enable */
    timer_dma_enable(TIMER0,TIMER_DMA_UPD);

    /* auto-reload preload enable */
    timer_auto_reload_shadow_enable(TIMER0);

    /* TIMER0 counter enable */
    timer_enable(TIMER0);
}

使用特权

评论回复
 楼主 | 2021-4-19 18:34 | 显示全部楼层
官方样例原样不修改,也不行。启动死区功能,就根本无波形输出。不启用死区时波形正常。

使用特权

评论回复
| 2021-4-20 10:14 | 显示全部楼层
可以参考我的帖子,,,https://bbs.21ic.com/icview-3013678-1-1.html

使用特权

评论回复
| 2021-4-20 10:29 | 显示全部楼层
是不是死区时间设置的比占空比还大了?

使用特权

评论回复
 楼主 | 2021-4-20 10:45 | 显示全部楼层
sonicll 发表于 2021-4-20 10:29
是不是死区时间设置的比占空比还大了?

没有,死区时间才100,定时器周期1250,系列脉冲中,占空比小于100的极少数

使用特权

评论回复
 楼主 | 2021-4-20 13:28 | 显示全部楼层
zeshoufx 发表于 2021-4-20 10:14
可以参考我的帖子,,,https://bbs.21ic.com/icview-3013678-1-1.html

谢谢,验证是可以的

使用特权

评论回复
| 2021-4-24 22:39 | 显示全部楼层
去参考贴看看

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

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

论坛热帖

在线客服 快速回复 返回顶部 返回列表