程序運(yùn)用高級(jí)篇2c-sdk espressif iot編程手冊(cè)_第1頁
程序運(yùn)用高級(jí)篇2c-sdk espressif iot編程手冊(cè)_第2頁
程序運(yùn)用高級(jí)篇2c-sdk espressif iot編程手冊(cè)_第3頁
程序運(yùn)用高級(jí)篇2c-sdk espressif iot編程手冊(cè)_第4頁
程序運(yùn)用高級(jí)篇2c-sdk espressif iot編程手冊(cè)_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

EspressifIoTSDK編程手CurrentFeiCompletionJGCompletion[ ]INTERNAL ]PUBLIC版本信JGHan修訂jsonJGHan增加i2cmasterJG增加若干JG可用heap區(qū)大小接口;Fei增加SSLServer接口;修改加密接口名稱Fei增加獲取、修改mac&ip接Fei2、修改flashFeiFeiFei1、Upgrade2、DHCP3ap查詢4、smartconfig接口5、TCP收包阻塞6、AT暗示。Wi-Fi成員標(biāo)志歸Wi-Fi所有權(quán)歸?2014所有。保留所利。版本信 前 軟件框 SDK提供的API接 定時(shí)器接 底層用戶接 SPIFlash相關(guān)接 WIFI相關(guān)接 云端升級(jí)接 sniffer相關(guān)接 smartconfig接 網(wǎng)絡(luò)連接相關(guān)接 通用接 TCP連接接 UDP接 AT接 jsonAPI接 數(shù)據(jù)結(jié)構(gòu)定 定時(shí)器結(jié) wifi參 station配置參 softap配置參 scan參 smartconfig結(jié)構(gòu) json相關(guān)結(jié) json結(jié) json宏定 espconn參 回調(diào) 驅(qū)動(dòng)接 GPIO接口 PIN腳功能設(shè)置 GPIO輸入輸出相關(guān) GPIO中斷控制相關(guān) GPIO中斷處理函 雙UART接口 i2cmaster接 附 ESPCONN編 模 說 步 TCPserver模 說 步 RTC接口使用示 前為需要在ESP8266物聯(lián)網(wǎng)平臺(tái)進(jìn)行軟件開發(fā)的嵌入式軟件開發(fā)人員。軟件框?yàn)榱俗層脩舨挥藐P(guān)心底層網(wǎng)絡(luò),如WIFI、TCP/IP等的具體實(shí)現(xiàn),僅專注于物聯(lián)網(wǎng)應(yīng)用的開發(fā),SDK為用戶提供了一套數(shù)據(jù)接收、發(fā)送函數(shù)接口,用戶只始化功能在user_main.c文件中實(shí)現(xiàn)。voidusre_init(void)的作用是給用戶提供一個(gè)初始化接口,也是上層程SDKjsonAPI,用戶也可以采用自定義數(shù)據(jù)包格式,SDK提供的API定時(shí)器說明:定時(shí)器接口接口函數(shù)或宏以及所使用的參數(shù)結(jié)構(gòu)體定義在(工程\lue\oap.h boolrepeat_flag——該定時(shí)是否重復(fù)無無Voidos_timer_setfn(ETSTimer*ptimer,ETSTimerFunc*pfunction,TESTimerFunc*pfunction無底層用戶void無void無無無注意:1、同時(shí)定義USE_US_TIMER;2、system_timer_reinit需放在最開始,user_init第一句。無uint32idvoidsystem_deep_sleep(uint32uint32time_in_us設(shè)置休眠時(shí)間,單位:usXPD_DCDC0REXT_RSTBDeep)說明:后述init參數(shù)指esp_init_data_default.binuint8 option=0時(shí),initbyte108deep_sleep_set_option(0)表示initbyte108deepsleep醒來后的是否作RF_CAL。deep_sleep_set_option(1)表示deepsleep醒來后和上電一樣,要作RF_CAL,電流較)Voidsystem_set_os_print(uint8Uint8onoff/0x000x01代表打開打印功能無無Uint32無Uint32heapboolsystem_os_task(os_task_ttask,uint8prio,os_event_t*queue,uint8Uint8qlen——消息隊(duì)列深度#define #defineTEST_QUEUE_LEN os_event_t*testQueue;voidtest_task(os_event_t{switch(e->sig)case}}voidvoid{}boolsystem_os_post(uint8prio,os_signal_tsig,os_param_tOs_signal_tsig——消息類型Os_param_tpar——消息參數(shù)void{}打印輸出:sig_rxuint32功功能:獲得RTC時(shí)間,單位:RTC時(shí)鐘周舉例:system_get_rtc_time()1010RTC時(shí)鐘周期;system_rtc_clock_cali_proc5,表示一個(gè)RTC時(shí)鐘周期為5us,則實(shí)際時(shí)間為10x5=50us。注意:deepsleep(或者system_restart)時(shí),系統(tǒng)時(shí)間歸零,但是RTC時(shí)間仍u(píng)int32 時(shí)間,單位:微秒。如果計(jì)時(shí)滿,則歸零重新計(jì)。uint32注意:RTC系列接口的使用示例,見附錄。memoryuserdata512bytes|_____systemdata____ user 256 512 注意:RTCmemory只能4字節(jié)整存整取,函數(shù)中參數(shù)des_addrblocknumber,4字節(jié)每blockuserdata區(qū)起始位置,des_addr為256/4=64,savesize為存入數(shù)據(jù)的字節(jié)數(shù)。boolsystem_rtc_mem_write(uint32des_addr,void*src_addr,uint32uint32des_addrrtcmemory的位置,des_addr64void*src_addr——數(shù)據(jù)指針uint32save_size 用 |_____systemdata____ user 256 512 RTCmemory4src_addruserdata區(qū)起始位置,src_addr256/464,savesizeboolsystem_rtc_mem_read(uint32src_addr,void*des_addr,uint32src_addr—rtcmemory的位置,src_addrvoid*des_addruint32save_size功能:功能:UART0MTCKUART0RX,MTDOUART0TX。硬MTDO(U0CTS)MTCK(U0RTSUART0,從而避免上電時(shí)從UART0打印出ROMLOG。 system_uart_swapadcUint16system_adc_readAdcSPIFlashSPIFlash uint16sec0SpiFlashOpResultspi_flash_write(uint32uint32uint32 Flashuint32*src_addr-FlashUint32size寫入數(shù)據(jù)長度SpiFlashOpResultspi_flash_read(uint32src_addr,uint32*des_addr,uint32size)uint32src_addr Flashuint32*des_addr– Uint32sizeenum{WIFI相關(guān)接uint8wifi_get_opmode#defineSTATIONAP_MODEboolwifi_set_opmode(uint8#defineSTATION_MODE0x01#defineSOFTAP_MODE0x02#defineSTATIONAP_MODE#defineSTATION_MODE0x01#defineSOFTAP_MODE0x02#defineSTATIONAP_MODE0x03True,成功;Falseboolwifi_station_get_config(structstation_configstructstation_config*config——wifistation接口參數(shù)指針True,成功;False由,不需要調(diào)用wifi_station_connect來進(jìn)行連接。_set0boolwifi_station_set_config(structstation_configstructstation_config*config——wifistation接口參數(shù)指針True,成功;False功能:功能:wifistationboolTrue,成功;FalseboolTrue,成功;FalseSTATION_IDLE=boolwifi_station_scan(structscan_config*config,scan_done_cb_tscan_config{uint8* uint8;APAPuint8structscan_config*config–APNULL表示此項(xiàng)不設(shè)configchannelAP上掃描某指定AP。NULL,channel0,則在scan_done_cb_tcb-AP熱點(diǎn)信息回調(diào)True,成功;False功能:功能:scan回調(diào)void*arg——獲取的AP參數(shù),argbss_info結(jié)構(gòu)體指針來解析所掃描的structbssinfo結(jié)構(gòu)體定義熱點(diǎn)信息以鏈表形 無staticvoidICACHE_FLASH_ATTRscan_done(void*arg,STATUSstatus){if(status=={structbss_info*bss_link=(structbss_info*)arg;bss_link=bss_link->next.stqe_next;//ignore}}boolwifi_station_ap_number_set(uint8uint8ap_numberAP的數(shù)目(MAX:True,成功;False5structstation_configconfigAP5個(gè),因此請(qǐng)傳入數(shù)組大小為5。APstructstation_configinti=boolwifi_station_ap_change(uint8True,成功;FalseAPUint8wifi_station_get_current_ap_id無uint800uint8set0,關(guān)閉自動(dòng)連接;1,開啟自動(dòng)連接。True,成功;False注意:dhcp默認(rèn)開啟。.boolTrue,成功;False注意:dhcp默認(rèn)開啟。.boolTrue,成功;Falseenumdhcp_statusenumdhcp_statusstructsoftap_config*config——wifisoftap接口參數(shù)指針(softapconfig說明)True,成功;Falseboolwifi_softap_set_config(structsoftap_configstructsoftap_config*config——wifisoftap接口參數(shù)指針(softapconfig說明)True,成功;Falsestructstation_info*無無void_station_info無無structstation_info*station=structstation_info*MAC2STR(station-:: station=}structstation_info*station=wifi_softap_get_station_info();:"MACSTR",ip:"IPSTR"\n",MAC2STR(station-stationstation=STAILQ_NEXT(station,}注意:dhcp默認(rèn)開啟。boolTrue,成功;False注意:dhcp默認(rèn)開啟。boolTrue,成功;FalseESP8266softAPdhcpserverIP地址的范圍注意:必須在dhcpserver關(guān)閉的情況下設(shè)置。{uint32start_ip;uint32end_ip;True,成功;FalseESP8266softAPdhcpserver狀態(tài)enumdhcp_statusenum注意:ESP8266softAP只支持bg。boolwifi_set_phy_mode(enumphy_modeenumphy_modemode–phy_mode{PHY_MODE_11GPHY_MODE_11G=True,成功;FalseESP8266物理層模式(802.11b/g/n)Enumphy_mode1B=1,PHY_MODE_11G=址boolwifi_get_ip_info(uint8if_index,structip_infouint8if_indexip信息的接口,其中STATION_IF為0x00SOFTAP_IFSOFTAP_IF0x01True,成功;Falseboolwifi_set_ip_info(uint8if_index,structip_infouint8 –stationipsoftAP#define#definestructip_info ipstructip_infoIP4_ADDR(&info.ip,192,168,3,IP4_ADDR(&mask,255,255,255,IP4_ADDR(&info.ip,10,10,10,IP4_ADDR(&info.gw,10,10,10,IP4_ADDR(&mask,255,255,255,True,成功;Falseboolwifi_set_macaddr(uint8if_index,uint8uint8 –stationmacsoftAP#defineuint8–maccharsofap_mac[6]={0x16,0x34,0x56,0x78,0x90,charsta_mac[6]={0x12,0x34,0x56,0x78,0x90,wifi_set_macaddr(STATION_IF,sta_mac);True,成功;Falsewifistationsoftap接口mac信息Boolwifi_get_macaddr(uint8if_index,uint8uint8if_indexmacSTATION_IF0x00,SOFTAP_IF為0x01。TrueTrue,成功;False功能:設(shè)置省電模式。設(shè)置為功能:設(shè)置省電模式。設(shè)置為注意:ESP8266僅在單station模式支持省電,共支持Modemsleep,lightsleep,deepsleepModemsleep模式。Deepsleep會(huì)即時(shí)休眠,請(qǐng)調(diào)用systemdeepsleep設(shè)置。Boolwifi_set_sleep_type(enumsleep_typeenumsleep_typetypeTrue,成功;FalseEnumsleep_typesleep_type{ uint8gpio_id——gpiouint8gpio_name——gpiomux#define#defineHUMITURE_WIFI_LED_IO_NUM云端升級(jí)uint80x00UPGRADE_FW_BIN10x01UPGRADE_FW_BIN2upgradeflagSDK底層會(huì)設(shè)置flag,上層如用戶自行調(diào)用spi_flash_write實(shí)現(xiàn)云端升級(jí),則需調(diào)用本接口設(shè)置為UPGRADE_FLAG_FINISHsystem_upgrade_reboot重啟切換到新軟uint8flag–#define#defineUPGRADE_FLAG_START#defineUPGRADE_FLAG_FINISH無無upgradeflaguint8#define#defineUPGRADE_FLAG_START#defineUPGRADE_FLAG_FINISHboolsystem_upgrade_start(structupgrade_server_infostructupgrade_server_info*serverserver相關(guān)的參數(shù)。voidsystem_upgrade_reboot無snifferuint8promiscuous——0,disable1,enable無wificallback無Uint8wifi_get_channelboolwifi_set_channel(uint8True,成功;FalsesmartconfigAPsmartconfig_start函數(shù)boolsmartconfig_start(sc_typetype,sc_callback_tsctypetype——選擇使用哪種協(xié)議連接:AirKissESP-TOUCHsc_callback_tcb到passwordstructstationconfigTrueFalse,失敗void{structstation_config*sta_conf= }說明:連上AP后,可調(diào)用本接口釋放內(nèi)存。boolTrueFalsesmartconfig_stop后調(diào)用本接口。smartconfig_stopsc_statustypedefHANNEL=0, } 通用接口:TCP和UDP均可以調(diào)用的接口。 Sin8Sin8espconn_delete(structespconn succeed,#defineESPCONN_OK0Erro,詳見espconn.hErr_tespconn_gethostbyname(structespconnstructespconn*espconnip_addr_t*addr——ipdns_found_callbackfoundLOCALvoid tform_dns_found(constchar*name,ip_addr_t*ipaddr,void{structespconn*pespconn=(structespconn tform_dns_found*((uint8*)&ipaddr->addr),*((uint8*)&ipaddr->addr+*((uint8*)&ipaddr->addr+2),*((uint8*)&ipaddr->addr+}{ }uint32uint32功能功能 espconn_sent_callbackstructespconn*espconn succeed,#defineESPCONN_OK功能功能 espconn_recv_callbackstructespconn*espconnespconn_connect_callbackconnect_cb— succeed,#defineESPCONN_OKvoidespconn_sent_callback(void無voidespconn_recv_callback(void*arg,char*pdata,unsignedshortchar*pdata——接收數(shù) 參無callback用espconn_sent發(fā)送下一包數(shù)據(jù)。Sint8espconn_sent(structespconn*espconn,uint8*psent,uint16uint8*psent——sent數(shù)據(jù)指針 succeed,#defineESPCONN_OKTCPSin8espconn_accept(structespconnstructespconn*espconn——相應(yīng)連接的控制塊結(jié) succeed,#defineESPCONN_OK0Erro,詳見espconn.hSSLSint8espconn_secure_accept(structespconnstructespconn*espconn——相應(yīng)連接的控制塊結(jié) succeed,#defineESPCONN_OK0Erro,詳見espconn.h功功能:ESP8266作為TCPServer,設(shè)置超時(shí)斷開連接的超時(shí)時(shí)長Sin8Sin8espconn_regist_time(structespconn*espconn,uint32interval,uint8 succeed,#defineESPCONN_OK0Erro,詳見espconn.hSin8espconn_get_connection_info(structespconn*espconn,**pcon_info,uint8structespconn*espconn——相應(yīng)連接的控制塊結(jié)remot_info**pcon_infouint8typeflags succeed,#defineESPCONN_OK0Erro,詳見espconn.hSint8espconn_connect(structespconn succeed,#defineESPCONN_OKVoidespconn_connect_callback(void無TCP連接的屬性選擇sint8espconn_set_opt(structespconn*espconn,uint8structespconn*espconnuint8uint8opt0,TCP2min1TCPnalgo succeed,#defineESPCONN_OK0Erro,詳見espconn.hespconn_set_opt(espconn1)disconnectSin8espconn_disconnect(structespconn succeed,#defineESPCONN_OK0Erro,詳見espconn.hTCP連接函數(shù),成功連接時(shí)回 succeed,#defineESPCONN_OKTCP重連函數(shù),出錯(cuò)時(shí)的回說明:reconnectcallback實(shí)際為出錯(cuò)處理回調(diào),任何階段reconnectcallback;用戶可在reconnectcallback中自定義出錯(cuò)處理。espconn_connect_callbackstructespconn*espconnespconn_connect_callbackconnect_cb— succeed,#defineESPCONN_OK 斷開TCP連接函數(shù),斷開連接成功時(shí)回espconn_connect_callbackespconn_connect_callbackconnect_cb— succeed,#defineESPCONN_OKTCP連接(SSSint8espconn_secure_connect(structespconn succeed,#defineESPCONN_OKSint8espconn_secure_sent(structespconn*espconn,uint8*psent,uint16uint8*psent——sent數(shù)據(jù)指針 succeed,#defineESPCONN_OK0Erro,詳見espconn.h succeed,#defineESPCONN_OKuint8Sint8Sint8espconn_tcp_set_max_con(uint8uint8numTCP連接數(shù)的上限 succeed,#defineESPCONN_OKTCPserverSint8espconn_tcp_set_max_con_allow(structespconn*espconn,uint8structespconn*espconn——相應(yīng)連接的控制塊結(jié)uint8num succeed,#defineESPCONN_OKTCPByte左右的空間時(shí)候調(diào)用,且本接口可以反復(fù)調(diào)用。Sint8espconn_recv_hold(structespconnsucceed,#defineESPCONN_OKespconn參數(shù)對(duì)應(yīng)的tcp對(duì)象.0-Sint8espconn_recv_unhold(structespconn succeed,#defineESPCONN_OK0UDPSin8espconn_create(structespconnstructespconn*espconn——相應(yīng)連接的控制塊結(jié) succeed,#defineESPCONN_OK0Erro,詳見espconn.hip_addr_t*host_ipip_addr_t*multicast_ip– succeed,#defineESPCONN_OK0Erro,詳見espconn.hip_addr_t*host_ip——主機(jī)ipip_addr_t*multicast_ipip succeed,#defineESPCONN_OK0Erro,詳見espconn.hATvoidvoidvoidat_cmd_array_regist(at_funcation*custom_at_cmd_arrar,uint32at_funcationat_funcation*custom_at_cmd_arrarATuint32cmd_numboolat_get_next_int_dec(char**p_src,int*result,int*char**p_src*p_srcatint*result-intint*err 13:只發(fā)現(xiàn)’-TRUE,正常解析到數(shù)字(數(shù)字省略時(shí),仍然返回True,但錯(cuò)誤碼會(huì)為-Int32at_data_str_copy(char*p_dest,char**p_src,int32char*p_dest-char**p_src*p_srcATint32int32max_len失敗,返回-1voidat_initvoidat_port_print(constcharconstchar*str-要輸出的字符串jsonAPI說明:jsonparse相關(guān)接口函數(shù)或宏定義在(工程 \lude\son\sonparse.h \include\json\jsontree.h功能:功能:json解析初始化voidjsonparse_setup(structjsonparse_state*state,constcharstructjsonparse_state*state——jsonconstchar*json——json無Intjsonparse_next(structjsonparse_statestructjsonparse_state*state——json解析指針I(yè)ntIntjsonparse_copy_value(structjsonparse_state*state,char*str,intintsize——緩存大小structjsonparse_state*state——json解析指針structjsonparse_state*state——json解析指針structjsonparse_state*state——json解析指針structjsonparse_state*state——json解析指針I(yè)ntjsonparse_strcmp_value(structjsonparse_state*state,constcharstructjsonparse_state*state——jsonvoidjsontree_setup(structjsontree_contextstructstructjsontree_value*root,int(*structjsontree_context*js_ctx——jsonstructjsontree_value*root——根樹元素指針int(*putchar)(int)——輸入函數(shù)無voidjsontree_reset(structjsontree_contextstructjsontree_context*js_ctx——json格式樹指針無constchar*jsontree_path_name(conststructjsontree_cotext*js_ctx,intstructjsontree_context*js_ctx——json格式樹指char*——參數(shù)指voidjsontree_write_int(conststructjsontree_context*js_ctx,intstructjsontree_context*js_ctx——json格式樹指無voidjsontree_write_int_array(conststructjsontree_context*js_ctx,constint*text,uint32length)structjsontree_context*js_ctx——json格式樹指int*textuint32length——數(shù)組長無voidjsontree_write_string(conststructjsontree_context*js_ctx,conststructstructjsontree_context*js_ctx——json無structjsontree_context*js_ctx——json格式樹指針structjsontree_value*jsontree_find_next(structjsontree_context*js_ctx,inttype)structjsontree_context*js_ctx——json格式樹指數(shù)據(jù)結(jié)構(gòu)定時(shí)器結(jié)typedeftypedefvoidETSTimerFunc(voidtypedefstruct_ETSTIMER_}wifistructstruct{uint8uint8buint8b。typedeftypedefenum=}_struct{uint8uint8uint8uint8uint8 //100~60000ms,defaultstructsoftap_config_len0_len0structstruct{uint8uint8;;uint8uint8show_hiddenstruct{o)u8 u8channel;s8rssi;u8uint8is_hiddenAP是否為隱藏的smartconfigtypedeftypedef{NNEL= }typedefPTOUCH=0,json相關(guān)結(jié)structstruct{uint8_tstruct{constcharstructjsontree_valuestructjsontree_contextuint16_tindex[JSONTREE_MAX_DEPTH];uint8_tdepth;uint8_tpath;intstruct{uint8_tint(*output)(structjsontree_contextint(*set)(structjsontree_context*js_ctx,structjsonparse_statestructjsontree_objectuint8_tuint8_tstructjsontree_pairstruct{uint8_ttype;uint8_tstructjsontree_valuestruct{constchar*json;intpos;intlen;intvstart;intvlen;charerror;char \staticstructjsontree_pairjsontree_pair_##name[]={ staticstructjsontree_objectname= sizeof(jsontree_pair_##name)/sizeof(structjsontree_pair), jsontree_pair_##name}#defineJSONTREE_PAIR_ARRAY(value)(structjsontree_value*)(value) \staticstructjsontree_value*jsontree_value_##name[]={ }; staticstructjsontree_arrayname={ sizeof(jsontree_value_##name)/sizeof(structjsontree_value*), jsontree_value_##name}espconn/**callbackprototypetoinformabouteventsforaespconntypedefvoid(*espconn_recv_callback)(void*arg,char*pdata,unsignedshorttypedefvoid(*espconn_callback)(void*arg,char*pdata,unsignedshortlen);typedefvoid(*espconn_connect_callback)(void*arg);typedefvoid*espconn_handle;typedefstruct_esp_tcp{ charipaddr[4];espconn_connect_callbackreconnect_callback;}typedefstruct{int_port;}/**Protocol

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論