3066|2

79

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

【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功能强大!

此帖出自GD32 MCU论坛

最新回复

手写亮了。   详情 回复 发表于 2022-2-23 17:42
点赞 关注
 

回复
举报

7277

帖子

2

TA的资源

版主

沙发
 

好像还挺准的!用纸写算试真不错!哈哈

此帖出自GD32 MCU论坛
 
 
 

回复

7671

帖子

18

TA的资源

五彩晶圆(高级)

板凳
 

手写亮了。

此帖出自GD32 MCU论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表