|
在上次的文章里,介绍了如何简单使用non-os-sdk的项目,接下来,我们使用这个sdk来实现wifi的连接和任务创建。
wifi连接:
连接WiFi是esp8266应用程序中的关键步骤之一,它允许设备与互联网通信。在ESP8266 Non-OS SDK中,WiFi连接通常涉及几个步骤,包括设置连接参数、连接到WiFi网络、等待连接成功等。
首先是头文件的引入,要使用non-os-sdk 来运行8266,要确保我们要有相关的头文件,最少的头文件要求如下:
- #include "ets_sys.h"
- #include "osapi.h"
- #include "user_interface.h"
复制代码
接下来,我们就可以编写wifi连接的代码了,首先我们看一下sdk技术手册里关于wifi连接的函数说明
说明里提示了,在设置wifi和连接wifi,需要先设置wifi的模式,我们连接wifi主要使用sta模式,此外,说明里还提到,wifi_station_set_config在user_init里调用,则esp8266 会在初始化完成后自动连接到路由器。
那么我们的代码可以这样编写:
user_init:
- user_set_station_config();
复制代码
烧录,由于此sdk不同于机智云使用的版本,因此烧录会有点区别,按图中进行烧录即可:
烧录完成后,看一下串口输出:
可以看见,已经连接成功了,为了确保连接成功,我们可以创建一个任务输出wifi连接信息:
虽然此sdk不带操作系统,没有调度,但是提供了定时器给我们使用,我们可以使用自带的定时器调用函数达到任务的同样效果:
先定义一个ostimer
定义需要被调用的函数,函数里输出wifi状态:
- void my_timer_callback(void *arg) {
- os_printf("wifi_status:%d\n",wifi_station_get_connect_status());
- }
复制代码
设置定时器和定时器的时间:
- os_timer_setfn(&my_timer, (os_timer_func_t *)my_timer_callback, NULL);
- os_timer_arm(&my_timer, 1000, 1);
复制代码
编译烧录,查看串口输出:
可以看见,wifi连接成功后,状态从1变成了5
- enum {
- STATION_IDLE = 0,
- STATION_CONNECTING,
- STATION_WRONG_PASSWORD,
- STATION_NO_AP_FOUND,
- STATION_CONNECT_FAIL,
- STATION_GOT_IP
- };
复制代码 从这个结构体里,1表示wifi正在连接,5则是连接成功并且分配到了ip,这就是最简单的wifi连接代码。
|
|