这一节主要有两部分内容:1、管脚的控制;2、软件定时器的使用。
先说定时器,ESP8266内部的定时器分为软件定时器和硬件定时器。手册中指出硬件定时器其实就跟单片机里的timer一样,而软件定时器纯粹由软件实现,咱们可以理解为单片机里面类似for循环之类的循环延时函数。
定时器理解了,管脚控制就简单了,先上一下我这里的模块原理图:

原理很简单,板上有一个三色的LED,所以这里实现一个定时实现LED开关的程序。先说GPIO的用法,分俩步。使用之前包含“user_interface.h”文件:
1、设置管脚为普通的GPIO模式
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);
函数PIN_FUNC_SELECT的功能是选择管脚功能,第一个参数是管脚的名字,第二个参数看起来像管脚编号,但其实是管脚对应的功能。
在编译器中选中FUNC_GPIO12,按F3,会打开eagle_soc.h文件,在这个文件里你会发现,无论是FUNC_GPIO12,FUNC_GPIO13,还是多少,对应的宏定义都是3:
#define FUNC_GPIO12 3
2、设置管脚方向和电平
gpio_output_set(BIT12, BIT13, BIT12|BIT13, 0):
该函数的功能是设置GPIO属性,共有四个参数,没有用到的填0即可。
第一个参数,设置输出为高的位;
第二个参数,设置输出为低的位;
第三个参数,设置使能输出的管脚;
第四个参数,设置使能输入的管脚。
所以上面一行代码的意思是:设置GPIO12和GPIO13为输出,12输出高,13输出低。同理,下面一行代码的意思是:设置GPIO12为输入。
gpio_output_set(0, 0, 0, BIT12):
注:参考手册2c-esp8266_sdk_api_guide_cn_v1.5.4的152页。
然后是软件定时器的使用,使用之前包含如下两个头文件:
#include "ets_sys.h" //内有timer结构体的定义
#include "osapi.h"
使用方法也很简单,共分四步:
1、定义一个软件定时器的结构体
os_timer_t LED_timer; //定义一个软件定时器的结构体,用于实现周期操作
2、关掉该定时器的定时功能
os_timer_disarm(&LED_timer); //配置之前,先关闭
3、设置该定时器的回调函数。使用定时器,必须设置回调函数
os_timer_setfn(&LED_timer, (os_timer_func_t *)LED_TURN, NULL);
该函数共有三个参数:
第一个,你要设置哪个定时器?LED_timer
第二个,定时器定时时间到了之后,要执行哪个函数:LED_TURN
第三个,回调函数的参数,没有的话写NULL即可。
完了,也很简单。等等!定时的时长是多少?别急。
4、使能定时器,并设置时长,是否循环执行
os_timer_arm(&LED_timer, 3000, 1);
该函数共有三个参数:
第一个,你要使能哪个定时器? LED_timer
第二个,时长多长? 3000,单位是毫秒。另有微秒的函数,可自行研究。
第三个,这三秒定时的功能只运行一次,还是循环执行?1,循环;0,一次。
第三步里,提到了一个函数LED_TURN,这个函数就是开启或关闭LED的函数:
void LED_TURN()
{
static state_flag = 0;
if(state_flag == 0)
{
//GPIO12拉高,GPIO13拉低
gpio_output_set(BIT12, BIT13, BIT12|BIT13, 0);
state_flag = 1;
}
else
{
gpio_output_set(BIT13, BIT12, BIT12|BIT13, 0);
state_flag = 0;
}
}
到此,软件定时器的用法说完了。
-
单片机
+关注
关注
6078文章
45628浏览量
675445 -
定时器
+关注
关注
23文章
3378浏览量
125091 -
管脚
+关注
关注
1文章
230浏览量
33948
原文标题:ESP8266_04管脚控制与软件定时器
文章出处:【微信号:gh_dae0718828df,微信公众号:gh_dae0718828df】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
【ESP8266系列】WT8266-S3模组规格书
【ESP8266系列】WT8266-S5模组规格书
【ESP8266系列】WT8266-S6模组规格书
【ESP8266系列】WT8266-S1模组产品介绍
【ESP8266系列】WT8266-S6模组产品介绍
无需安装!在浏览器里就能玩转ESP32/ESP8266,这个神器绝了!
【瑞萨RA6E2地奇星开发板试用】基于RA6E2+ESP8266在STA模式下数据透传到Python服务器整体系统演示总结
【瑞萨RA6E2地奇星开发板试用】使用`RA6E2`驱动 `ESP8266 WiFi模块`,调试AT指令。
晶科鑫 | 国产26MHz晶振匹配Espressif(乐鑫) ESP8285/ESP8266芯片案例
ESP8266和ESP32开发板常见的2种下载方式
ESP8266和ESP32开发板常见的2种下载方式
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
【ESP8266】进入透传模式后,数据间隔怎么调整,
STM32+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植)
ESP8266的管脚的控制和软件定时器的使用
评论