0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP8266的管脚的控制和软件定时器的使用

单片机爱好者 来源:LONG 2019-07-29 14:57 次阅读

这一节主要有两部分内容:1、管脚的控制;2、软件定时器的使用。

先说定时器,ESP8266内部的定时器分为软件定时器和硬件定时器。手册中指出硬件定时器其实就跟单片机里的timer一样,而软件定时器纯粹由软件实现,咱们可以理解为单片机里面类似for循环之类的循环延时函数。

定时器理解了,管脚控制就简单了,先上一下我这里的模块原理图:

ESP8266的管脚的控制和软件定时器的使用

原理很简单,板上有一个三色的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;

}

}

到此,软件定时器的用法说完了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5999

    文章

    43964

    浏览量

    620711
  • 定时器
    +关注

    关注

    23

    文章

    3146

    浏览量

    112027
  • 管脚
    +关注

    关注

    1

    文章

    222

    浏览量

    31592

原文标题:ESP8266_04管脚控制与软件定时器

文章出处:【微信号:gh_dae0718828df,微信公众号:gh_dae0718828df】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问ESP8266ESP32有安卓的软件可以控制吗?

    ESP8266ESP32有安卓的软件可以控制吗?
    发表于 10-31 07:26

    nodemcu和esp8266是什么关系?

    nodemcu和esp8266是什么关系 nodemcu和esp8266是什么关系?通俗理解就是nodemcu是一个开发板,基于esp8266的开发板。 目前市面上搭载有ESP8266
    的头像 发表于 10-20 14:53 2237次阅读
    nodemcu和<b class='flag-5'>esp8266</b>是什么关系?

    esp8266ex引脚详细 ESP8266EX参考手册

    ESP8266EX 由乐鑫公司开发,提供了⼀套⾼度集成的 Wi-Fi SoC 解决⽅案,其低功耗、 紧凑设计和⾼稳定性可以满⾜⽤户的需求。 ESP8266EX 拥有完整的且⾃成体系的 Wi-Fi
    发表于 09-08 17:05 1次下载

    ESP8266物联网茶壶

    电子发烧友网站提供《ESP8266物联网茶壶.zip》资料免费下载
    发表于 07-10 16:45 0次下载
    <b class='flag-5'>ESP8266</b>物联网茶壶

    ESP8266由游戏手柄控制的汽车机器人

    电子发烧友网站提供《ESP8266由游戏手柄控制的汽车机器人.zip》资料免费下载
    发表于 07-03 10:12 0次下载
    <b class='flag-5'>ESP8266</b>由游戏手柄<b class='flag-5'>控制</b>的汽车机器人

    带有Blynk和IR的Arduino ESP8266控制继电器

    电子发烧友网站提供《带有Blynk和IR的Arduino ESP8266控制继电器.zip》资料免费下载
    发表于 06-30 10:31 0次下载
    带有Blynk和IR的Arduino <b class='flag-5'>ESP8266</b><b class='flag-5'>控制</b>继电器

    使用ESP8266 DIY控制任何家用电器

    电子发烧友网站提供《使用ESP8266 DIY控制任何家用电器.zip》资料免费下载
    发表于 06-27 14:55 0次下载
    使用<b class='flag-5'>ESP8266</b> DIY<b class='flag-5'>控制</b>任何家用电器

    基于ESP8266的Agrumino Lemon

    电子发烧友网站提供《基于ESP8266的Agrumino Lemon.zip》资料免费下载
    发表于 06-15 09:19 0次下载
    基于<b class='flag-5'>ESP8266</b>的Agrumino Lemon

    ESP8266ESP32上的WiFi Webradio

    电子发烧友网站提供《ESP8266ESP32上的WiFi Webradio.zip》资料免费下载
    发表于 06-13 11:38 0次下载
    <b class='flag-5'>ESP8266</b>或<b class='flag-5'>ESP</b>32上的WiFi Webradio

    无法从串行监视控制ESP8266怎么解决?

    连接 Arduino 时,Arduino IDE Lybrary 的串行监视上就绪。在我使用了一些来自互联网的草图之后它工作正常,但是一周后我想从那里的串行监视命令 ESP8266只站在 AT 上,我无法从串行监视
    发表于 05-31 06:10

    ESP8266初次如何实现无线通信(基于电脑与ESP8266)

    一.需要的软件及硬件 1.软件 2.硬件 二.ESP8266的使用 .ESP8266的介绍 2.ESP8266进行初始AT指令的配
    发表于 05-30 09:53 14次下载
    <b class='flag-5'>ESP8266</b>初次如何实现无线通信(基于电脑与<b class='flag-5'>ESP8266</b>)

    如果esp8266硬件真的不支持Jtag接口,调试如何与esp8266交互?

    到 Jlink 调试。然而,根据数据表,这些引脚只能用作 GPIO、HSPI、I2S 或 PWM。 所以我不明白为什么在芯片硬件不支持的情况下,可以通过这些管脚用Openocd调试Esp8266?而如果
    发表于 05-25 06:24

    CC2530采用ESP8266与手机APP通信

    项目概述: 项目实现通过CC2530控制ESP8266将其配置成AP+TCP服务器模式,并通过手机APP连接到TCP服务器并完成数据传输。ESP8266将作为一个热点(AP)来工作,其WiFi模块
    的头像 发表于 05-23 09:15 2832次阅读

    如何使用ESP8266+ATMega组合板来学习和控制ESP8266

    我尝试使用 ESP8266+ATMega 组合板来学习和控制 ESP8266。 该板设置为 USB+esp(仅,未使用 ATMega) esp
    发表于 05-16 09:14

    51单片机通过WIFI模块ESP8266控制四路继电器

    手机APP通过ESP8266 WIFI模块与51单片机通信控制四路继电器。下位机由单片机、ESP8266模块和继电器模块组成,上位机由Android手机APP承担。我们在APP上发送继电器的开 关
    发表于 04-26 09:22 7次下载
    51单片机通过WIFI模块<b class='flag-5'>ESP8266</b><b class='flag-5'>控制</b>四路继电器