esp8266RTOS3.1之如何连接wifi

用esp8266也有一个月了,以前都是用的RTOS2.0版本的SDK,最近一个星期试了一下最新的RTOS3.1SDK,跟RTOS2.0的SDK还是有很大出入的,因此在编写例程时,将一些常用的api记录下来。
esp8266的RTOS3.1多了一个NVS分区,程序一开始就要初始化这个分区

nvs_flash_init();初始化NVS分区

接下来就是如何初始化wifi连接了

wifi_event_group=xEventGroupCreate();//创建一个事件标志组
tcpip_adapter_init();   //初始化TCP/IP堆栈
 esp_event_loop_init(event_handler, NULL);            //这个api会调用event_handler函数来处理wifi的状态事件
 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();//初始化默认wifi的默认值
 esp_wifi_init(&cfg);                                              //初始化wifi
   esp_wifi_set_storage(WIFI_STORAGE_RAM);设置wifi配置存储位置
    wifi_config_t wifi_config={         
       .sta={
            .ssid =SSID,
            .password=PASSWORD,
       } 
    };                                       //设置wifi配置信息,这里我们用的是station模式,所以只要设置ssid和password
    esp_wifi_set_mode(WIFI_MODE_STA);  //设置wifi模式
    esp_wifi_set_config(ESP_IF_WIFI_STA,&wifi_config); //将配置信息,写入wifi
    esp_wifi_start();//启动wifi

这里呢,我们只是启动了wifi,并没有连接路由器,一般我们会将wifi的连接等操作放在状态事件event_handler处理

static esp_err_t event_handler(void *ctx, system_event_t *event)
{
    switch (event->event_id)
    {
    	case SYSTEM_EVENT_STA_START: //表示wifi启动就绪
        esp_wifi_connect();//连接路由器
        break;
    
    	 case SYSTEM_EVENT_STA_GOT_IP: //分配得到IP,就表示已经连上路由器咯
    	  xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);//设置事件标志位
         printf("esp_wifi_connect");
         break;
   		 case SYSTEM_EVENT_STA_DISCONNECTED: //断开连接
        esp_wifi_connect();//当esp8266因为异常断开连接时,我们继续连接
        xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);//清除事件标志位,等连接wifi后重新设置
         break;
  	   default:
         break;
    }
     return ESP_OK;
}

这几个只是常用网络连接的状态,当然还有其他的状态,都在system_event_id_t这个枚举里,好了,到这里我们已经连接上路由器了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值