在大多数裸奔的单片机中,我们总是会在主函数main中,添加一个while(1)无限循环,保证程序一直执行不退出。但今天我们要讲的是在事件驱动的esp8266中,一般不能用while循环,更多的时候我们是添加定时器,在定时器的回调函数中添加要执行的代码,并让定时器重复定时来达到循环执行代码的目的。那么我们首先来看看esp8266里的软件定时器吧。
在esp8266的sdk中,有5个函数来操作软件定时器。请看:
1.os_timer_arm,该函数是使能毫秒级定时器。函数的定义如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/cc65f329f5302e3aa6a1b433df449fd7.png)
2.os_timer_arm_us,该函数是使能微秒级的定时器,最高精度为500us.请看函数的定义如下:
![](https://i-blog.csdnimg.cn/blog_migrate/0603c3c64e0d9ae5ebbf560d953e4514.png)
在使用该函数之前,需要调用system_timer_reinit来初始化软件定时器。
3.os_timer_disarm,此函数为取消定时器定时。在定时器初始化之前和定时器结束定时的时候调用。函数定义如下: