-
GD32F103CBT6如何配置PB0和PB1输出PWM波?
#include"gd32f10x.h"#include"gd32f10x_libopt.h"#include"systick.h"voidT0_init(void){timer_oc_parameter_structtimer_ocintpara;timer_parameter_structtimer_initpara;rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_AF);gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_0);rcu_periph_clock_enable(RCU_TIMER0);timer_deinit(TIMER0);/*TIMER0configuration*/timer_initpara.prescaler=108-1;timer_initpara.alignedmode=TIMER_COUNTER_EDGE;timer_initpara.counterdirection=TIMER_COUNTER_UP;timer_initpara.period=16000-1;timer_initpara.clockdivision=TIMER_CKDIV_DIV1;timer_initpara.repetitioncounter=0;timer_init(TIMER0,&timer_initpara);/*CH1configurationinPWMmode1*/timer_ocintpara.ocpolarity=TIMER_OC_POLARITY_HIGH;timer_ocintpara.outputstate=TIMER_CCX_ENABLE;timer_ocintpara.ocnpolarity=TIMER_OCN_POLARITY_HIGH;timer_ocintpara.outputnstate=TIMER_CCXN_DISABLE;timer_ocintpara.ocidlestate=TIMER_OC_IDLE_STATE_LOW;timer_ocintpara.ocnidlestate=TIMER_OCN_IDLE_STATE_LOW;timer_channel_output_config(TIMER0,TIMER_CH_1,&timer_ocintpara);/*CH1configurationinPWMmode1,dutycycle25%*/timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_1,9999);timer_channel_output_mode_config(TIMER0,TIMER_CH_1,TIMER_OC_MODE_PWM0);timer_channel_output_shadow_config(TIMER0,TIMER_CH_1,TIMER_OC_SHADOW_DISABLE);timer_primary_output_config(TIMER0,ENABLE);/*auto-reloadpreloadenable*/timer_auto_reload_shadow_enable(TIMER0);/*auto-reloadpreloadenable*/timer_enable(TIMER0);}intmain(void){rcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1);systick_config();T0_init();while(1){}}
2022-08-17 0