乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ESP8266 入門-NONSDK-LED-UDP

       風(fēng)雲(yún)再現(xiàn) 2017-01-22

      論壇:http://bbs./forum.php

      官方網(wǎng)站:http://www./en/support/download/documents

      ESP8266 SDK 編程入門

      http://blog.csdn.net/jackhuang2015/article/details/50850204

       

      ESP8266 個人資料網(wǎng)站:鏈接:http://pan.baidu.com/s/1nv0jeSp 密碼:m7ff

       

      一.            硬件

       

      ESP8266EX 開發(fā)板

       

       

      模組方案:

       

       

       

       

       

       

      二.            軟件

       

      1.燒錄軟件(ESP_DOWNLOAD_TOOL_V2.4.exe

      、

      注意燒寫地址和文件

      燒寫方法如下,先按住FLASH不放,再按一下RST鍵,測試版既可以就如UART燒寫狀態(tài),然后按下軟件START進行燒寫,如果燒寫不進去可先按住軟件的START再重復(fù)上述動作,多試幾次。

       

       

       

       

      2.串口調(diào)試工具(sscom42.exe

       

      3.網(wǎng)絡(luò)調(diào)試助手(NetAssist.exe

       

      2.SDK編譯環(huán)境(本人用Non-OS SDK

      RTOS SDK  Non-OS SDK 有何區(qū)別?

       主要差異點如下:

      Non-OS SDK 

      Non-OS SDK 主要使用定時器和回調(diào)函數(shù)的方式實現(xiàn)各個功能事件的嵌套,達到特定條件下觸發(fā)特定功能函數(shù)的目的。Non-OS SDK 使用 espconn 接口實現(xiàn)網(wǎng)絡(luò)操作,用戶需要按 照 espconn 接口的使用規(guī)則進行軟件開發(fā)。

      RTOS SDK

      1. RTOS 版本 SDK 使用 freeRTOS 系統(tǒng),引入 OS 多任務(wù)處理的機制,用戶可以使用 freeRTOS 的標(biāo)準(zhǔn)接口實 現(xiàn)資源管理、循環(huán)操作、任務(wù)內(nèi)延時、任 務(wù)間信息傳遞和同步等面向任務(wù)流程的設(shè)計方式。具體接口使用方法參考 freeRTOS 官方網(wǎng)站的使用說明或者 USING THE FREERTOS REAL TIME KERNEL--A Practical Guide 介紹。

      2. RTOS 版本 SDK 的網(wǎng)絡(luò)操作接口是標(biāo)準(zhǔn) lwIP API,同時提供了 BSD Socket APIsocket 接口的封裝實現(xiàn),用戶可以直接按照socket API的使用方式來開發(fā)軟件應(yīng)用,也可以直接編譯運行其他平臺的標(biāo)準(zhǔn) Socket 應(yīng)用,有效降低平臺切換的學(xué)習(xí)成本。

      3. RTOS 版本 SDK 引入了 cJSON 庫,使用該庫函數(shù)可以更加方便的實現(xiàn)對 JSON 數(shù)據(jù)包的解析。

      4. RTOS 版本兼容non-OS SDK中的Wi-Fi接 口、smart config接口、Sniffer相關(guān)接口、系統(tǒng)接口、定時器接 口、FOTA接口和外圍驅(qū)動接口,不支持AT實現(xiàn)。

       

       

      二次開發(fā)軟件

      三.參考文件

       

      四.            基本程序解析

      1.輸出控制

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);//初始化GPIO2

      GPIO_OUTPUT_SET(GPIO_ID_PIN(15), 0);//GPIO2設(shè)置為低電平

      2.輸入采集

      PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);//初始化GPIO2

      if(GPIO_INPUT_GET(GPIO_ID_PIN(12))==0)

      {     

      }

      3.定時器

      (放在主程序里)

      os_timer_disarm(&timer);//關(guān)閉定時器,相當(dāng)于計時器的計數(shù)

      os_timer_setfn(&timer,(os_timer_func_t *)timer_callback,NULL);//初始化定時器

      os_timer_arm(&timer,1000,1);//開始定時器,1000毫秒后,回調(diào)前面的callback函數(shù)(后面的0表示只運行為一次 1表示循環(huán)運行)

       

      (應(yīng)該放在主程序前)

      void timer_callback()//回調(diào)的函數(shù)

       

      {

        

      }

      4.設(shè)置WiFi模式

      (參考2C-ESP8266__SDK__Programming Guide__CN_v1.5.pdf或者2C-Espressif IoT SDK 編程手冊_v0.9.1.pdf)

      (放在主程序里)

      wifi_set_opmode(0x02);// 設(shè)置WiFi模式為AP

       

      5.設(shè)置wifi的名稱和密碼

      (應(yīng)該放在主程序前)

      void ICACHE_FLASH_ATTR

      user_set_softap_config(void)//設(shè)置wifi的名稱和密碼

      {

      struct softap_config config;

      os_memset(config.ssid,0, 32);

      os_memset(config.password,0, 64);

      os_memcpy(config.ssid,"ESPESP22", 9);//SSID賬號

      os_memcpy(config.password,"99999999", 8);//密碼

      config.authmode=AUTH_WPA_WPA2_PSK;

      config.ssid_len=0;

      config.max_connection=5;//允許接入點數(shù)量

       

      wifi_softap_set_config(&config);//設(shè)置 WiFi soft-AP ?配置,并保存到 flash

      }

       

       

      6.UDP數(shù)據(jù)接收與發(fā)送

      (應(yīng)該放在主程序前  定義結(jié)構(gòu)體用于UDP數(shù)據(jù)接收與發(fā)送

      struct espconn PhoneConn;//定義結(jié)構(gòu)體

      esp_udp PhoneConnUdp;

      (放在主程序里)

      PhoneConn.type=ESPCONN_UDP;

      PhoneConn.proto.udp=&PhoneConnUdp;

      PhoneConn.proto.udp->local_port=9999;//本地端口

      PhoneConn.proto.udp->local_port=9999;//遠程端口

       

      PhoneConn.proto.udp->remote_ip[0]=255;//指定遠程IP地址

      PhoneConn.proto.udp->remote_ip[1]=255;

      PhoneConn.proto.udp->remote_ip[2]=255;

      PhoneConn.proto.udp->remote_ip[3]=255;

       

      PhoneConn.proto.udp->remote_ip[0]=255; //指定本地IP地址

      PhoneConn.proto.udp->remote_ip[1]=255;

      PhoneConn.proto.udp->remote_ip[2]=255;

      PhoneConn.proto.udp->remote_ip[3]=255;

       

      espconn_regist_recvcb(&PhoneConn,udpclient_recv);//注冊一個UDP數(shù)據(jù)包接收回調(diào)

      espconn_create(&PhoneConn);//建立UDP回調(diào)

       

      (應(yīng)該放在主程序前 回調(diào)的函數(shù)udpclient_recv 用于判斷接收到的數(shù)據(jù))

      void ICACHE_FLASH_ATTR

      udpclient_recv(void *arg,char *pdata, unsigned short len)

      {

          if (pdata[0]=='L'&&pdata[1]=='E'&&pdata[2]=='D'&&pdata[3]=='0')

         {

              }

       

      }

       

      (用于發(fā)送數(shù)據(jù))

      espconn_sent(&PhoneConn,"LED打開!",9);

       

       

       

       

      五.            例程

       

      #include "os_type.h"

      //#include "driver/gpio16.h"

      #include "gpio.h"

      //#include "driver/uar.h"http://串口外設(shè)驅(qū)動庫

      #include "user_interface.h"

      #include "spi_flash.h"

      #include "espconn.h"

      #include "user_config.h"

      #include "smartconfig.h"

       

       

      #include "ets_sys.h"

      #include "osapi.h"

       

       

      struct espconn PhoneConn;//定義結(jié)構(gòu)體

      esp_udp PhoneConnUdp;

       

      void ICACHE_FLASH_ATTR

      udpclient_recv(void *arg,char *pdata, unsigned short len)

      {

          if (pdata[0]=='L'&&pdata[1]=='E'&&pdata[2]=='D'&&pdata[3]=='0')

         {

             GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0);

             //espconn_sent(&PhoneConn,"打開LED成功!" ,13);//接收數(shù)據(jù)

              }

       

              if (pdata[0]=='L'&&pdata[1]=='E'&&pdata[2]=='D'&&pdata[3]=='1')

                {

                    GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);

                }

       

      if(GPIO_INPUT_GET(GPIO_ID_PIN(12))==0)

      {

             espconn_sent(&PhoneConn,"LED打開!",9);

      }

      else

             {

             espconn_sent(&PhoneConn,"LED關(guān)閉!",9);

             }

       

      }

       

       

       

       

      LOCAL os_timer_t timer;//定義結(jié)構(gòu)體用于定時器

       

      void ICACHE_FLASH_ATTR

      user_set_softap_config(void)//設(shè)置wifi的名稱和密碼

      {

      struct softap_config config;

      os_memset(config.ssid,0, 32);

      os_memset(config.password,0, 64);

      os_memcpy(config.ssid,"ESPESP22", 9);//SSID賬號

      os_memcpy(config.password,"99999999", 8);//密碼

      config.authmode=AUTH_WPA_WPA2_PSK;

      config.ssid_len=0;

      config.max_connection=5;//允許接入點數(shù)量

       

      wifi_softap_set_config(&config);//設(shè)置 WiFi soft-AP ?配置,并保存到 flash

      }

       

       

       

       

      char zt = 1;

       

      void timer_callback()//回調(diào)的函數(shù)

       

      {

          if(zt == 1){

              GPIO_OUTPUT_SET(GPIO_ID_PIN(15), 0);//GPIO2設(shè)置為低電平

              zt = 0;

          }else{

              GPIO_OUTPUT_SET(GPIO_ID_PIN(15), 1);//GPIO2設(shè)置為低電平

              zt =1;

          }

      }

       

      void user_init(void)

      {

             wifi_set_opmode(0x02);//設(shè)置WiFi模式為AP

             user_set_softap_config();

       

             PhoneConn.type=ESPCONN_UDP;

             PhoneConn.proto.udp=&PhoneConnUdp;

             PhoneConn.proto.udp->local_port=9999;//本地端口

             PhoneConn.proto.udp->local_port=9999;//遠程端口

             PhoneConn.proto.udp->remote_ip[0]=255;//指定IP地址

             PhoneConn.proto.udp->remote_ip[1]=255;

             PhoneConn.proto.udp->remote_ip[2]=255;

             PhoneConn.proto.udp->remote_ip[3]=255;

       

             PhoneConn.proto.udp->remote_ip[0]=255;

             PhoneConn.proto.udp->remote_ip[1]=255;

             PhoneConn.proto.udp->remote_ip[2]=255;

             PhoneConn.proto.udp->remote_ip[3]=255;

       

             espconn_regist_recvcb(&PhoneConn,udpclient_recv);//注冊一個UDP數(shù)據(jù)包接收回調(diào)

             espconn_create(&PhoneConn);//建立UDP回調(diào)

       

       

       

       

           //os_printf("SDK version:%s\n", system_get_sdk_version());

           PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);//初始化GPIO2

           PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO15);//初始化GPIO2

       

       

           os_timer_disarm(&timer);//關(guān)閉定時器,相當(dāng)于計時器的計數(shù)

           os_timer_setfn(&timer,(os_timer_func_t *)timer_callback,NULL);//初始化定時器

           os_timer_arm(&timer,5000,1);//開始定時器,1000毫秒后,回調(diào)前面的callback函數(shù)(后面的0表示只運行為一次 1表示循環(huán)運行)

       

       

      }

       

      void user_rf_pre_init(){}

      六.            安卓APP編譯

      軟件E4A(易安卓(有免費版))

      1.主界面

      2.代碼

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多