打印

关于GD32F307 TIMER0 输出3路互补PWM代码

[复制链接]
2472|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
代码使用到IO口有
PA8,PA9,PA10,PA13,PA14,PA15
库版本:V1.0.0, firmware for GD32F30x
实验现象:


void gpio_config(void)
{
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_AF);

    /*configure PA8 PA9 PA10(TIMER0 CH0 CH1CH2) as alternate function*/
   gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_8);
   gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_9);
   gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_10);

    /*configure PB13 PB14 PB15(TIMER0 CH0N CH1NCH2N) as alternate function*/
   gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_13);
   gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_14);
   gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_15);
}

voidtimer0_config(void)
{

    timer_oc_parameter_struct timer_ocintpara;
    timer_parameter_struct timer_initpara;
    timer_break_parameter_structtimer_breakpara;

    rcu_periph_clock_enable(RCU_TIMER0);

    timer_deinit(TIMER0);

    /* TIMER0 configuration */
    timer_initpara.prescaler         = 119;
    timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
    timer_initpara.counterdirection  = TIMER_COUNTER_UP;
    timer_initpara.period            = 1000;
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
    timer_initpara.repetitioncounter = 0;
    timer_init(TIMER0,&timer_initpara);

     /* CH0/CH0N,CH1/CH1N and CH2/CH2Nconfiguration in timing mode */
    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_config(TIMER0,TIMER_CH_1,&timer_ocintpara);
   timer_channel_output_config(TIMER0,TIMER_CH_2,&timer_ocintpara);

   timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_0,299);
   timer_channel_output_mode_config(TIMER0,TIMER_CH_0,TIMER_OC_MODE_PWM0);

   timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_1,299);
   timer_channel_output_mode_config(TIMER0,TIMER_CH_1,TIMER_OC_MODE_PWM0);

   timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_2,299);
   timer_channel_output_mode_config(TIMER0,TIMER_CH_2,TIMER_OC_MODE_PWM0);


/* TIMER0 primaryoutput function enable */
   timer_primary_output_config(TIMER0,ENABLE);

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

int main(void)
{
    gpio_config();
    timer0_config();
    while (1);
}

资料来源于微信公众号“life_and_family”,更多相关资料可以关注下该公众号


沙发
zeshoufx| | 2018-11-22 14:25 | 只看该作者
谢谢分享,,学习了

使用特权

评论回复
板凳
vibra2016| | 2018-11-25 10:42 | 只看该作者
这个对照示波器的开发的还是很方便的

使用特权

评论回复
地板
shenmu2012| | 2018-11-30 20:48 | 只看该作者
这个主要是定时器的输出的

使用特权

评论回复
5
tomyoct| | 2018-11-30 21:50 | 只看该作者
支持下,谢谢分享!

使用特权

评论回复
6
tomyoct| | 2018-11-30 21:50 | 只看该作者
vibra2016 发表于 2018-11-25 10:42
这个对照示波器的开发的还是很方便的

那个是逻辑分析仪的波形,不是示波器的应该。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:GigaDevice
简介:兆易创新科技集团股份有限公司 (股票代码603986) 是全球领先的Fabless芯片供应商,公司成立于2005年4月,总部设于中国北京

17

主题

55

帖子

3

粉丝