#include"stdio.h"
#include"gd32f30x.h"
#include"keydiver.h"
int main()
{
timer_oc_parameter_struct pwmcfg;
timer_parameter_struct timercfg;
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_AF);
gpio_pin_remap_config(GPIO_TIMER0_PARTIAL_REMAP, ENABLE);
gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_7);
gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_8);
gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_13);
rcu_periph_clock_enable(RCU_TIMER0);
timer_struct_para_init(&timercfg);
timercfg.prescaler =59999u;
timercfg.alignedmode=TIMER_COUNTER_EDGE;
timercfg.counterdirection=TIMER_COUNTER_UP;
timercfg.period=2000u-1;
timercfg.clockdivision=TIMER_CKDIV_DIV1;
timercfg.repetitioncounter=4;
timer_init(TIMER0,&timercfg);
pwmcfg.outputstate = (uint16_t)TIMER_CCX_ENABLE;
pwmcfg.outputnstate = TIMER_CCXN_ENABLE;
pwmcfg.ocpolarity = TIMER_OC_POLARITY_HIGH;
pwmcfg.ocnpolarity = TIMER_OCN_POLARITY_HIGH;
pwmcfg.ocidlestate = TIMER_OC_IDLE_STATE_LOW;
pwmcfg.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
timer_channel_output_config(TIMER0,TIMER_CH_0,&pwmcfg);
timer_channel_output_mode_config(TIMER0,TIMER_CH_0,TIMER_OC_MODE_PWM0);
timer_channel_output_pulse_value_config(TIMER0,TIMER_CH_0,2000);
timer_channel_output_state_config(TIMER0,TIMER_CH_0,ENABLE);
timer_primary_output_config(TIMER0,ENABLE);
timer_enable(TIMER0);
while(1){}
}
timer0_ch0的引脚为pa8,互补引脚为pb13,使能输出和互补输出,极性和互补极性置为高,空闲状态下为低,通道使能,优先使能,配置脉冲值,引脚重映射,pb13就可以被pa7替换