芯查查logo
  • 数据服务
    1. 新产品
    2. 物料选型
    3. 查替代
    4. 丝印反查
    5. 查品牌
    6. PCN/PDN
    7. 查方案
    8. 查代理
    9. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监控
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
  • 开通会员
耐心的晶体管Roy
GD32VW553-IOT点亮led

一、硬件介绍:

萤火工场新发布的GD32VW553-IOT的外观具有十分轻量化的设计,采用的是兆易创新在23年底发布的GD32VW553HMQ7芯片,芯片采用RISC-V内核的32位微处理器。板载PCB天线和IPEX天线座实现了Wifi,蓝牙信号收发;SY8201 DC-DC芯片为板载系统提供稳定的电源;1.27mm间距的排针的BOOT跳线实现了BOOT0和BOOT1电平选择;按键和BOOT0配合使用实现固件更新功能;Flash接口可根据需要扩展合适容量的数据存储器。

二、软件环境:

在兆易创新的资料下载网页上下载GD32 Embedded Builder 作为编写代码的开发环境;GD32 All-In-One Programmer 将编译好的固件下载到开发板上。

三、GD32 Embedded Builder环境

 

 

打开GD32 Embedded Builder后在帮助下拉菜单下打开安装新软件添加 https://mirrors.ustc.edu.cn/eclipse/technology/babel/update-site/R0.20.0/2022-12/

 

 

(图中所示为华文环境)

四、固件下载:

先完成BOOT硬件跳线配置,再打开GD32 All-In-One Programmer ,PA6,PA7接入USB转换UART-TTL工具,按下复位按键KEY,按下软件上“connect”,当连接完成后完成后续下载操作。

 

 

 

 

在开发环境下生成的代码:

 

#include "gd32vw55x.h"

#include "systick.h"

#include <stdio.h>

#include "main.h"

#include "gd32vw553h_eval.h"

 

/*!

\brief toggle the led every 500ms

\param[in] none

\param[out] none

\retval none

*/

void led_spark(void)

{

static __IO uint32_t timingdelaylocal = 0U;

 

if(timingdelaylocal) {

 

if(timingdelaylocal < 500U) {

gd_eval_led_on(LED2);

gd_eval_led_on(LED3);

} else {

gd_eval_led_off(LED2);

gd_eval_led_off(LED3);

}

 

timingdelaylocal--;

} else {

timingdelaylocal = 1000U;

}

}

 

/*!

\brief main function

\param[in] none

\param[out] none

\retval none

*/

int main(void)

{

#ifdef __FIRMWARE_VERSION_DEFINE

uint32_t fw_ver = 0;

#endif /* __FIRMWARE_VERSION_DEFINE */

 

/* condiv systick */

systick_config();

eclic_priority_group_set(ECLIC_PRIGROUP_LEVEL3_PRIO1);

/* initilize the LEDs, USART and key */

gd_eval_led_init(LED1);

gd_eval_led_init(LED2);

gd_eval_led_init(LED3);

gd_eval_com_init(EVAL_COM0);

gd_eval_key_init(KEY_TAMPER_WAKEUP, KEY_MODE_GPIO);

 

#ifdef __FIRMWARE_VERSION_DEFINE

fw_ver = gd32vw55x_firmware_version_get();

/* print firmware version */

printf("\r\nGD32VW55X series firmware version: V%d.%d.%d", (uint8_t)(fw_ver >> 24), (uint8_t)(fw_ver >> 16), (uint8_t)(fw_ver >> 8));

#endif /* __FIRMWARE_VERSION_DEFINE */

 

/* print out the clock frequency of system, AHB, APB1 and APB2 */

printf("\r\nCK_SYS is %d\r\n", rcu_clock_freq_get(CK_SYS));

printf("\r\nCK_AHB is %d\r\n", rcu_clock_freq_get(CK_AHB));

printf("\r\nCK_APB1 is %d\r\n", rcu_clock_freq_get(CK_APB1));

printf("\r\nCK_APB2 is %d\r\n", rcu_clock_freq_get(CK_APB2));

 

while(1) {

if(RESET == gd_eval_key_state_get(KEY_TAMPER_WAKEUP)) {

delay_1ms(50);

if(SET == gd_eval_key_state_get(KEY_TAMPER_WAKEUP)) {

gd_eval_led_toggle(LED1);

}

gd_eval_led_toggle(LED2);

delay_1ms(50);

}

}

gd_eval_led_toggle(LED3);

delay_1ms(50);

}

led在gd32vw553_eval定义如下

 

static uint32_t GPIO_PORT[LEDn] = {LED1_GPIO_PORT, LED2_GPIO_PORT,

LED3_GPIO_PORT};

static uint32_t GPIO_PIN[LEDn] = {LED1_PIN, LED2_PIN, LED3_PIN};

 

static rcu_periph_enum COM_CLK[COMn] = {EVAL_COM0_CLK};

static uint32_t COM_TX_PIN[COMn] = {EVAL_COM0_TX_PIN};

static uint32_t COM_RX_PIN[COMn] = {EVAL_COM0_RX_PIN};

 

static rcu_periph_enum GPIO_CLK[LEDn] = {LED1_GPIO_CLK, LED2_GPIO_CLK,

LED3_GPIO_CLK};

 

static uint32_t KEY_PORT[KEYn] = {TAMPER_WAKEUP_KEY_GPIO_PORT};

static uint32_t KEY_PIN[KEYn] = {TAMPER_WAKEUP_KEY_PIN};

static rcu_periph_enum KEY_CLK[KEYn] = {TAMPER_WAKEUP_KEY_GPIO_CLK};

static exti_line_enum KEY_EXTI_LINE[KEYn] = {TAMPER_WAKEUP_KEY_EXTI_LINE};

static uint8_t KEY_PORT_SOURCE[KEYn] = {TAMPER_WAKEUP_KEY_EXTI_PORT_SOURCE};

static uint8_t KEY_PIN_SOURCE[KEYn] = {TAMPER_WAKEUP_KEY_EXTI_PIN_SOURCE};

static IRQn_Type KEY_IRQn[KEYn] = {TAMPER_WAKEUP_KEY_EXTI_IRQn};

led操作函数如下:

 

void gd_eval_led_toggle(led_typedef_enum lednum)

{

GPIO_TG(GPIO_PORT[lednum]) = GPIO_PIN[lednum];

}

点亮LED

 

void gd_eval_led_on(led_typedef_enum lednum)

{

GPIO_BOP(GPIO_PORT[lednum]) = GPIO_PIN[lednum];

}

息灭LED

 

void gd_eval_led_off(led_typedef_enum lednum)

{

GPIO_BC(GPIO_PORT[lednum]) = GPIO_PIN[lednum];

}

按键初始

void gd_eval_key_init(key_typedef_enum key_num, keymode_typedef_enum key_mode)

{

/* enable the key clock */

rcu_periph_clock_enable(KEY_CLK[key_num]);

rcu_periph_clock_enable(RCU_SYSCFG);

 

/* condiv button pin as input */

gpio_mode_set(KEY_PORT[key_num], GPIO_MODE_INPUT, GPIO_PUPD_NONE, KEY_PIN[key_num]);

 

if(key_mode == KEY_MODE_EXTI){

/* enable and set key EXTI interrupt to the lowest priority */

eclic_priority_group_set(ECLIC_PRIGROUP_LEVEL3_PRIO1);

eclic_irq_enable(KEY_IRQn[key_num],1, 1);

 

/* connect key EXTI line to key GPIO pin */

syscfg_exti_line_config(KEY_PORT_SOURCE[key_num], KEY_PIN_SOURCE[key_num]);

 

/* condiv key EXTI line */

exti_init(KEY_EXTI_LINE[key_num], EXTI_INTERRUPT, EXTI_TRIG_FALLING);

exti_interrupt_flag_clear(KEY_EXTI_LINE[key_num]);

}

}

按键获取

uint8_t gd_eval_key_state_get(key_typedef_enum button)

{

return gpio_input_bit_get(KEY_PORT[button], KEY_PIN[button]);

}

串口初始:

 

void gd_eval_com_init(uint32_t com)

{

/* enable GPIO clock */

uint32_t COM_ID = 0U;

if(EVAL_COM0 == com)

{

COM_ID = 0U;

}

 

rcu_periph_clock_enable(EVAL_COM0_TX_GPIO_CLK);

rcu_periph_clock_enable(EVAL_COM0_RX_GPIO_CLK);

 

/* enable USART clock */

rcu_periph_clock_enable(COM_CLK[COM_ID]);

 

/* connect port to USARTx_Tx */

gpio_af_set(EVAL_COM0_TX_GPIO_PORT, EVAL_COM0_TX_AF, COM_TX_PIN[COM_ID]);

 

/* connect port to USARTx_Rx */

gpio_af_set(EVAL_COM0_RX_GPIO_PORT, EVAL_COM0_RX_AF, COM_RX_PIN[COM_ID]);

 

/* condiv USART Tx as alternate function push-pull */

gpio_mode_set(EVAL_COM0_TX_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, COM_TX_PIN[COM_ID]);

gpio_output_options_set(EVAL_COM0_TX_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, COM_TX_PIN[COM_ID]);

 

/* condiv USART Rx as alternate function push-pull */

gpio_mode_set(EVAL_COM0_RX_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, COM_RX_PIN[COM_ID]);

gpio_output_options_set(EVAL_COM0_RX_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, COM_RX_PIN[COM_ID]);

 

/* USART condiv */

usart_deinit(com);

usart_baudrate_set(com, 115200U);

usart_receive_config(com, USART_RECEIVE_ENABLE);

usart_transmit_config(com, USART_TRANSMIT_ENABLE);

usart_enable(com);

}

萤火工场 开发板测评 GD32VW553
版块: 开发板测评
前4天 21:35
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
最新帖子
萤火工场GD32VW553-IOT测评+蓝牙串口透传树莓派pico 2测评 - 初体验【工程师经验】+ 飞线【开源】zvs142857 2.1A,3A快充 充电宝迷你UC3842 开关电源优化全解析:攻克常见难题,提升性能
热门版块
查看更多
电子元器件
汽车电子工程师论坛
工业电子专区
新手入门指南
单片机/MCU论坛
PCB设计
开源项目
每日打卡
电子DIY
维修技术

53

收藏

分享

微信扫码
分享给好友

评论