兆易创新 GD32VW553-UNIFI-IMH7
分享作者:yowant
作者昵称:华西医院精神科淦主任
评测品牌:萤火工场
评测型号:GD32VW553-IOT
发布时间:2025-07-21 14:07:31
0 0
前言
开源口碑分享内容
萤火工场推出的 GD32VW553-IOT 开发板,基于兆易创新(GigaDevice)高性能的 GD32VW553 双模无线微控制器。该芯片搭载 RISC-V 内核,集成了 Wi-Fi (802.11b/g/n) 和 BLE (Bluetooth Low Energy) 5.2 无线连接功能,为物联网设备开发提供了强大的核心平台。开发板设计紧凑,布局合理,提供了包括 GPIO、I2C、SPI、UART、ADC 等在内的丰富外设接口,便于连接各类传感器和执行器,满足多样化的 IoT 原型开发需求。
本文通过配置通用定时器TIM1的三个通道输出不同占空比的PWM信号以验证功能。
1.工程搭建,参考:
https://blog.csdn.net/weixin_44929802/article/details/145395456
2.测试代码
查询GD32VW553系列数据手册,可知PA0/PA1/PA2三个IO口的复用功能AF1分别是TIM1的CH0/CH1/CH2,以此编写代码:
void pwm_gpio_config(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
//配置PA0,PA1,PA2为复用功能1
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_0);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_MAX,GPIO_PIN_0);
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_0);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_MAX,GPIO_PI0N_1);
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_1);
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_2);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_MAX,GPIO_PIN_2);
gpio_af_set(GPIOA, GPIO_AF_1, GPIO_PIN_2);
}
void timer1_config(void)
{
/* -----------------------------------------------------------------------
通过TIMER1的3个通道输出不同占空比的PWM信号:
TIM1时钟 = SystemCoreClock / 160 = 1MHz
PWM频率=1M/(999+1)=1kHz
----------------------------------------------------------------------- */
rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL4);
rcu_periph_clock_enable(RCU_TIMER1);
timer_deinit(TIMER1);
//TIM1配置
timer_parameter_struct timer_initpara;
timer_initpara.prescaler = 159;//预分频1MHz
timer_initpara.alignedmode = TIMER_COUNTER_EDGE;//边缘对齐
timer_initpara.counterdirection = TIMER_COUNTER_UP;//向上计数
timer_initpara.period = 999;//频率1M/(999+1)=1kHz
timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
timer_initpara.repetitioncounter = 0;
timer_init(TIMER1,&timer_initpara);
//PWM输出配置
timer_oc_parameter_struct timer_ocintpara;
timer_ocintpara.outputstate = TIMER_CCX_ENABLE;
timer_ocintpara.outputnstate = TIMER_CCXN_DISABLE;
timer_ocintpara.ocpolarity = TIMER_OC_POLARITY_HIGH;
timer_ocintpara.ocnpolarity = TIMER_OCN_POLARITY_HIGH;
timer_ocintpara.ocidlestate = TIMER_OC_IDLE_STATE_LOW;
timer_ocintpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;
timer_channel_output_config(TIMER1,TIMER_CH_0,&timer_ocintpara);
timer_channel_output_config(TIMER1,TIMER_CH_1,&timer_ocintpara);
timer_channel_output_config(TIMER1,TIMER_CH_2,&timer_ocintpara);
timer_channel_output_pulse_value_config(TIMER1,TIMER_CH_0,250);//CH0占空比25%
timer_channel_output_mode_config(TIMER1,TIMER_CH_0,TIMER_OC_MODE_PWM0);
timer_channel_output_shadow_config(TIMER1,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);
timer_channel_output_pulse_value_config(TIMER1,TIMER_CH_1,500);//CH1占空比50%
timer_channel_output_mode_config(TIMER1,TIMER_CH_1,TIMER_OC_MODE_PWM0);
timer_channel_output_shadow_config(TIMER1,TIMER_CH_1,TIMER_OC_SHADOW_DISABLE);
timer_channel_output_pulse_value_config(TIMER1,TIMER_CH_2,750);//CH2占空比75%
timer_channel_output_mode_config(TIMER1,TIMER_CH_2,TIMER_OC_MODE_PWM0);
timer_channel_output_shadow_config(TIMER1,TIMER_CH_2,TIMER_OC_SHADOW_DISABLE);
timer_auto_reload_shadow_enable(TIMER1);
timer_enable(TIMER1);
}
通过逻辑分析仪验证:
PS:该开发板使用GD32 All In One Programmer通过串口烧录程序时,将PC8与VIN短接基本能百分百连接成功
全部评论

暂无评论

0/144