Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion bsp/gd32/risc-v/gd32vw553h-eval/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,51 @@ msh >

完成上述配置后即可点击调试选项进行调试,调试时boot管脚均置为低电平即可,调试时同样会进行固件下载。

## 4 注意事项
## 4.WIFI使用

使用ENV,menuconfig,修改和使能下面的配置

* 修改 RT_NAME_MAX为24

![image-20260205145545039](figures/image-20260205145545039.png)

* 使能 BSP_USING_WLAN

![image-20260205145642371](figures/image-20260205145642371.png)

* 修改LWIP的版本为V2.1.2

![image-20260205145806668](figures/image-20260205145806668.png)

* 关闭 RT_WLAN_PROT_ENABLE

![image-20260205145856756](figures/image-20260205145856756.png)

进行编译 scons -jx ,下载。

![image-20260205150826393](figures/image-20260205150826393.png)

可以使用help查看wifi指令,下面演示连接wifi以及ping

![image-20260205151251937](figures/image-20260205151251937.png)

### 使用NETDEV

* 使能 RT_USING_NETDEV

![image-20260205151356304](figures/image-20260205151356304.png)

重新编译,下载。

* wifi 连接以及ping

![image-20260205151712234](figures/image-20260205151712234.png)

* ifconfig:

![image-20260205151644687](figures/image-20260205151644687.png)

## 5 注意事项

- Cortex-Debug插件优先选用v1.4.4版本,高版本可能会出现与GDB版本不匹配的问题。

Expand Down
109 changes: 104 additions & 5 deletions bsp/gd32/risc-v/gd32vw553h-eval/applications/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,57 @@
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>

#ifdef BSP_USING_WLAN
#include "gd32vw55x_platform.h"
#include "wrapper_os.h"
#include "wifi_management.h"
#include "wifi_init.h"
#include "user_setting.h"
#include "util.h"
#endif /* BSP_USING_WLAN */
/* LED1 ~ LED3 pin: PA4 PA5 PA6 */
#define LED1_PIN GET_PIN(A, 4)

int main(void)

#ifdef RT_USING_WIFI
#define START_TASK_STACK_SIZE 512
#define START_TASK_PRIO 4

static void application_init(void)
{
rt_kprintf("Hello GD32VW553H\n");
/* set LED1 pin mode to output */
rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
util_init();

user_setting_init();

if (wifi_init()) {
rt_kprintf("wifi init failed\r\n");
} else {
// rt_kprintf("wifi init success\r\n");
}
}

static rt_sem_t init_done_sem = RT_NULL;

static void start_task(void *param)
{
(void)param;

application_init();
// rt_kprintf("Start task completed, exiting.\n");

/* Note: In RT-Thread, task should exit by returning, not by calling sys_task_delete(NULL).
* When the task function returns, RT-Thread will automatically clean up the task.
*/

rt_sem_release(init_done_sem);
}

#endif /* RT_USING_WIFI */
Comment on lines +28 to +61
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using Chinese comments in code violates RT-Thread coding standards. The comments on lines 200-201, as well as comments throughout main.c should be in English per RT-Thread guidelines.

代码中使用中文注释违反 RT-Thread 编码规范。第 200-201 行以及 main.c 中的其他注释应按照 RT-Thread 指南使用英文。

Copilot generated this review using guidance from repository custom instructions.

/* LED blink thread */
static void led_thread_entry(void *param)
{
(void)param;

while (1)
{
Expand All @@ -30,6 +72,63 @@ int main(void)
rt_pin_write(LED1_PIN, PIN_LOW);
rt_thread_mdelay(500);
}
}

int main(void)
{
rt_thread_t led_thread;

rt_kprintf("Hello GD32VW553H\n");
/* set LED1 pin mode to output */
rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);

#ifdef RT_USING_WIFI
/* Create semaphore for synchronization */
init_done_sem = rt_sem_create("init_done", 0, RT_IPC_FLAG_PRIO);
if (init_done_sem == RT_NULL) {
rt_kprintf("Failed to create semaphore\n");
return -RT_ERROR;
}

if (sys_task_create_dynamic((const uint8_t *)"start_task",
START_TASK_STACK_SIZE, OS_TASK_PRIORITY(START_TASK_PRIO), start_task, NULL) == NULL) {
rt_kprintf("Create start task failed\r\n");
return -RT_ERROR;
}

// rt_kprintf("Waiting for initialization to complete...\n");
/* Wait for initialization task to complete */
rt_sem_take(init_done_sem, RT_WAITING_FOREVER);
// rt_kprintf("Initialization completed, continuing...\n");

/* Clean up semaphore */
rt_sem_delete(init_done_sem);
init_done_sem = RT_NULL;

/* set wifi work mode */
rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME, RT_WLAN_STATION);
rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME, RT_WLAN_AP);
#ifdef RT_USING_NETDEV
rt_thread_mdelay(1000);
extern int wifi_netdev_register(void);
wifi_netdev_register();
#endif /* RT_USING_NETDEV */
#endif /* RT_USING_WIFI */

/* Create LED blink thread */
led_thread = rt_thread_create("led",
led_thread_entry,
RT_NULL,
1024,
25, /* Lower priority to not block shell */
10);
if (led_thread != RT_NULL) {
rt_thread_startup(led_thread);
rt_kprintf("LED thread started\n");
} else {
rt_kprintf("Failed to create LED thread\n");
}

/* Return from main to allow shell to work properly */
return RT_EOK;
}
28 changes: 28 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,34 @@ config SOC_GD32VW553H

menu "Onboard Peripheral Drivers"

menuconfig BSP_USING_WLAN
bool "Enable WiFi (GD32VW553H Internal)"
select RT_USING_WIFI
select PKG_USING_GD32VW55X_WIFI
select RT_USING_MEMHEAP
select RT_USING_SYSTEM_WORKQUEUE
default n

if BSP_USING_WLAN
config BSP_WLAN_SSID_MAX_LENGTH
int "WiFi SSID max length"
range 1 32
default 32

config BSP_WLAN_PASSWORD_MAX_LENGTH
int "WiFi password max length"
range 8 64
default 64

config BSP_WLAN_SCAN_CACHE_NUM
int "WiFi scan result cache number"
range 4 32
default 16

# Include GD32VW55x WIFI package configuration
osource "$(BSP_DIR)/packages/gd32vw55x-wifi/Kconfig"
endif

endmenu

menu "On-chip Peripheral Drivers"
Expand Down
5 changes: 5 additions & 0 deletions bsp/gd32/risc-v/gd32vw553h-eval/board/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,17 @@ board.c
trap_gcc.S
''')

# add WiFi driver
if GetDepend(['BSP_USING_WLAN']):
src += ['drv_wlan.c']

path = [cwd]

# add startup txt path
startup_path_prefix = os.getcwd() + '/../'

if rtconfig.PLATFORM in ['gcc']:
# Use standard peripheral library startup files for compatibility
src += [startup_path_prefix + '/packages/gd32-riscv-series-latest/GD32VW55x/RISCV/env_Eclipse/start.S']
src += [startup_path_prefix + '/packages/gd32-riscv-series-latest/GD32VW55x/RISCV/env_Eclipse/entry.S']

Expand Down
Loading
Loading