[i=s] 本帖最后由 夜雨喧嚣 于 2025-5-25 22:11 编辑 [/i]
我这边还有几个问题,如果有知道的大佬希望可以解答一下
1、如何设置AP自动选择频段或者自动跳频?
我这边没太仔细去看API,不太清楚光靠自带API能不能实现这个功能,因为目前我这边用不到
后续我如果用到了应该会去研究,之前做过lora,对这一块还是有些想法的
当然如果有大佬解答就更好了
2、感觉还有几个问题来着的,但是我忘记了,wifi是三四天前调的了,晚点我想起来再补充吧
1、驱动函数熟悉
驱动函数位置
ameba-rtos-release-v1.1\component\wifi\api\wifi_api.h
ameba-rtos-release-v1.1\component\wifi\whc\whc_host_rtos\whc_host_api_basic.c
具体内容可以自行下载SDK查看
1.1、连接wifi
.h文件中第170行起
.c文件中第267行起
s32 wifi_start_ap(struct rtw_softap_info *softap_config);
无需做其他初始化,因为在main函数中已经进行了初始化

2、userWiFi.c,.h创建
.c代码如下
#include "userWiFi.h"
static u8 wifi_password[10] = "12345678";
static struct rtw_softap_info AP_cfg;
void userWiFiInit(void * pvParameters)
{
(void)pvParameters;
int ret = 0;
//rtos_time_delay_ms(5000); //若运行后出现死机的情况,请取消该注释优先等待wifi初始化完成
memcpy(&AP_cfg.ssid.val,"5GTest",6);
AP_cfg.ssid.len = 6;
AP_cfg.hidden_ssid = 0;
AP_cfg.security_type = RTW_SECURITY_WPA2_AES_PSK;
AP_cfg.password = wifi_password;
AP_cfg.password_len = 8;
AP_cfg.channel = 149; //我目前只知道通过这个频段来设置是2.4G还是5G,请自行查询可用频段
wifi_start_ap(&AP_cfg); //开启AP
//while(1) //注释原因是我记得AP模式杀死不会出问题,可以自行测试
//{
// rtos_time_delay_ms(500);
//}
rtos_task_delete(NULL);
}
.h代码如下
#ifndef _USERWIFI_H_
#define _USERWIFI_H_
#include "wifi_api.h"
void userWiFiInit(void * pvParameters);
#endif
3、主函数实现
3.1、初始化任务

烧录固件后重新上电,电脑打开wifi,可以正常搜索到对应wifi,且频段设置对后wifi工作在对应频段,连接后手动修改ip至192.168.43频段,wifi默认ip为192.168.43.1(应该是),AP默认不带有dhcp功能,我这边就不赘述如何调用DHCP API了。
修改后测试可以正常ping通wifi模组,且wifi模组无论是2.4G还是5G均正常工作。
后续我应该不会发布BW20的学习帖子了,因为我需要的基础应用都已经学习完成了,其他的比如LWIP的各种使用,还有比如HTTP,DHCP这些非底层的我就不写了。