ESP8266 SDK开发篇(三)——定时器
来源:互联网 发布:战地4破解软件 编辑:程序博客网 时间:2024/05/16 05:52
首先先来解决上一讲留下的问题,如何检测芯片是否获取了ip,这个问题其实很简单。
先定义一个结构体变量struct ip_info pTempIp;
用来获取连接状况,然后调用两个函数,
wifi_get_ip_info(STATION_IF, &pTempIp);if(wifi_station_get_connect_status() == STATION_GOT_IP){ os_printf("ip:%d\r\nip:%X",pTempIp.ip.addr,pTempIp.ip.addr);}
先读取芯片的ip信息,然后判断是否获得ip,是则将刚刚保存的ip串口输出显示。
这里顺便说一下上一节struct station_config和struct ip_info这两个结构体,在ide中也可以很方便地用F3跳转到定义处查看。
struct station_config { uint8 ssid[32]; //要连接的wifi的账号 uint8 password[64]; //对应的密码 uint8 bssid_set; //这个位置1则只会连接ssid和bssid相匹配的路由器,比如两个名字一样的路由器,要区分只能通过mac不同 uint8 bssid[6];};
//这是一个结构体嵌套,没什么好讲解的,ip_info分别存了ip、子网掩码和网关信息。struct ip_addr { u32_t addr;};struct ip_info { struct ip_addr ip; struct ip_addr netmask; struct ip_addr gw;};
我们用的是NONOS_SDK开发,它不支持任务调度,也不支持基于优先级的抢占,程序从入口顺序执行,就跟51单片机类似,也因为它执行一条语句的速度很快,当我们按照上一节配置好wifi后直接判断时候获取到ip,这时芯片可能还没反应过来就已经判断完了,这样不是我们想要的结果,因此引入定时器的用法。玩过51的朋友可能会问,那为什么不用for循环延时的方法?这里作为一个小作业,大家可以去找一下资料顺便锻炼一下自己百度的能力,也可以试一下用for循环延时个10秒,再试试延时个几分钟看看会不会出问题。
首先要先定义一个定时器LOCAL os_timer_t ip_timer;
用来检测ip,然后这次我们会用到3个函数,这里我先给出代码再解释。
//关闭定时器//参数一:要关闭的定时器os_timer_disarm(&ip_timer);//设置定时器//参数一:要设置的定时器;参数二:定时器到时间要执行的回调函数;参数三:回调函数的参数os_timer_setfn(&ip_timer, (os_timer_func_t *)user_check_ip, NULL);//使能(启动)定时器//参数一:要使能的定时器;参数二:定时时间(单位:ms);参数三:是否重复执行,即执行完1次就停止还是一直执行下去os_timer_arm(&ip_timer, 5000, 1); //1:重复 0:只一次
另外要注意的是,定时时间并不是无限长,具体时间范围可以参考API文档,学会看文档也是程序猿必备的技能之一。
这样在配置好wifi设置后,就可以启动执行该定时器用于检测是否获取到ip,把本讲第一部分内容放到一个函数里,让定时器调用就好了,最后附上我的测试图。
测试图
阅读全文
0 0
- ESP8266 SDK开发篇(三)——定时器
- ESP8266 SDK开发篇(二)——连接wifi
- ESP8266 SDK开发篇(四)——UDP通信
- ESP8266 SDK开发篇(五)——GPIO
- ESP8266 SDK开发篇(一)——环境与烧录
- ESP8266-SDK的硬件定时器
- ESP8266-SDK的硬件定时器
- <WIFI>ESP8266定时器的使用(基于安信可SDK)
- ESP8266 RTOS SDK开发
- ESP8266 SDK开发1
- ESP8266 sdk开发入门
- Wifi模块——ESP8266(三)
- ESP8266与NodeMCU开发(三)客户端
- ESP8266的SDK开发入门教程
- ESP8266 SDK 编程入门 02-开发工具篇
- ESP8266-SDK开发入坑(一)-各种配置
- ESP8266 SDK开发之数据读写
- 【ESP8266】NONOS SDK开发,发送HTTP请求
- JNI开发基础系列--java和c之间互调
- 2017"百度之星"程序设计大赛
- 数据结构之排序算法总结
- Contains Duplicate
- Python安装超时
- ESP8266 SDK开发篇(三)——定时器
- 在线笔试的诀窍
- 日夜间模式
- Python环境安装(3.5.4)
- Parenthesis(括号平衡串,匹配问题)
- LeetCode 78. Subsets (Python)
- Aizu 2784 Similarity of Subtrees
- oi中犯过的2b错误
- 实现日夜间转换获取数据上下刷新(main)