D32f407VE产生两个相位可调的PWM波
前言需要使用两个PWM波形,并且两波形的相位差可调,并且能够输出指定数量的脉冲数硬件方面基于GD32F407VE芯片,其他F4XX系列的都差不多。查看GD32f4xx芯片手册,选用两个通用定时器,这里使用timer1和timer2,其中timer1的ch0通道和ch1通道;timer2的ch1通道,分别对应引脚timer1_ch1 - PA1timer2_ch1 - PC7为什么没有timer1_ch0呢,往下看。软件方面工作原理简述一下:使用主定时器输出A相固定PWM,然后使用主定时器再输出一个同步信号,用于控制从定时器何时开始输出,修改同步信号的延迟时间就能控制从定时器输出的PWM的相位差。所以timer1_ch0就是用来控制从定时器何时开始输出的,所以该通道不需要有硬件引脚。将timer1作为主机,timer2作为从机,接下来就是配置。上代码:timer_oc_parameter_struct timer_ocintpara;timer_parameter_struct timer_initpara;rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_GPIOC);rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL2);rcu_periph_clock_enable(RCU_TIMER1);rcu_periph_clock_enable(RCU_TIMER2);gpio_af_set(GPIOA,GPIO_AF_1,GPIO_PIN_1);gpio_mode_set(GPIOA,GPIO_MODE_AF,GPIO_PUPD_NONE,GPIO_PIN_1);gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_1);gpio_af_set(GPIOC,GPIO_AF_2,GPIO_PIN_7);