【GD32L233C-START评测】测评之五:多通道PWM测试
[复制链接]
一、PWM介绍
1.PWM定义:脉冲宽度调制(PWM) 是一种数字信号,最常用于控制电路。该信号在预定义的时间和速度中设置为高(5v或3.3v)和低(0v)。通常,我们将PWM的高电平称为1,低电平为0。
PWM在嵌入式系统中扮演者非常重要的角色,它可以控制显示屏和led的亮度、可以控制电机的转速和舵机的角度,通过pwm将数字的电压输出信号转化成了模拟电压的输出,
2.主要参数
(1)PWM占空比
PWM信号保持高电平的时间百分比称为占空比。如果信号始终为高电平,则它处于100%占空比,如果它始终处于低电平,则占空比为0%。如图1所示,T1为占空比,T为一个PWM周期。
(2)PWM的频率
PWM信号的频率决定PWM完成一个周期的速度。
3.GD32L233xx pin alternate functions::
4.占空比,频率计算方式:、
5.程序设计:开启两路Pa6 ,PA7通道:根据4算,频率为10K ,占空比:PA6 20% PA7:60%
void gpio_config(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
/* TIMER1 GPIO */
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7|GPIO_PIN_6 );
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7|GPIO_PIN_6);
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_7|GPIO_PIN_6);
}
void timer_config(void)
{
timer_oc_parameter_struct timer_ocinitpara;
timer_parameter_struct timer_initpara;
/* enable the peripherals clock */
rcu_periph_clock_enable(RCU_TIMER2);
/* deinit a TIMER */
timer_deinit(TIMER2);
/* initialize TIMER init parameter struct */
timer_struct_para_init(&timer_initpara);
/* TIMER2 configuration */
timer_initpara.prescaler = 63;
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
timer_initpara.counterdirection = TIMER_COUNTER_UP;
timer_initpara.period = 99;
timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
timer_init(TIMER2, &timer_initpara);
/* initialize TIMER channel output parameter struct */
timer_channel_output_struct_para_init(&timer_ocinitpara);
/* configure TIMER channel output function */
timer_ocinitpara.outputstate = TIMER_CCX_ENABLE;
timer_ocinitpara.ocpolarity = TIMER_OC_POLARITY_HIGH;
timer_channel_output_config(TIMER2, TIMER_CH_1, &timer_ocinitpara);
timer_channel_output_mode_config(TIMER2, TIMER_CH_1, TIMER_OC_MODE_PWM0);
timer_enable(TIMER2);
timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_1, 60);
timer_channel_output_config(TIMER2, TIMER_CH_0, &timer_ocinitpara);
timer_channel_output_mode_config(TIMER2, TIMER_CH_0, TIMER_OC_MODE_PWM0);
timer_enable(TIMER2);
timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_0, 20);
}
6 测试结果:
7,结论:
实验值与理论值温和,GD32L232PWM功能强大!
|