您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 资阳分类信息网,免费分类信息发布

ESP8266_06硬件定时器与IO中断

2019/9/1 20:58:44发布154次查看

这一节主要有两部分内容:1、gpio的中断用法;2、硬件定时器的使用。
先说定时器,前面说过了软件定时器的用法,如果你已经掌握了,那么硬件定时器基本是差不多的。都要设置回调函数、定时时间,区别的话,不用定义结构体,同时要选择中断源。
gpio的中断也很好理解,跟单片机的管脚用法基本一样,设置为输入模式,开启中断等等~
如何演示
依然使用三色led,同时板上还有一个按键。所以这里实现一个按键控制led闪烁开关的程序。按一下按键,led开始闪烁,再按一下,停止闪烁,并熄灭。
先说gpio配置为输入、中断的用法,分6步,使用之前包含“user_interface.h”文件:
1、设置管脚4为gpio模式
pin_func_select(periphs_io_mux_gpio4_u,func_gpio4);
函数pin_func_select的功能是选择管脚功能,第一个参数是管脚的名字,第二个参数是管脚对应的功能。
2、设置gpio4为输入模式
gpio_dis_output(gpio_id_pin(4));
3、禁止所有的io中断
ets_gpio_intr_disable();
4、设置中断处理函数
ets_gpio_intr_attach(gpio_intr_handler,null);
5、配置gpio4为下降沿触发的中断方式
gpio_pin_intr_state_set(gpio_id_pin(4),gpio_pin_intr_negedge);
6、使能gpio中断
ets_gpio_intr_enable();
注:参考手册esp8266-technical_reference_cn的20页。
然后是硬件定时器的使用,使用方法也很简单,共分3步:
1、选择中断源,选择定时器是否自动填充
hw_timer_init(0,1);
该函数共有两个参数:
参数1:选择中断源。0,使用 frc1 中断源,1,使用 nmi 中断源
参数2:是否自动填装。0,不自动填充,1,自动填充。
2、设置回调函数
hw_timer_set_func(led_turn);
3、启动定时器,设置定时时间,单位us
hw_timer_arm(1000000);
注:参考手册2c-esp8266_sdk_api_guide_cn_v1.5.4的21页。
下载了例程的童鞋会看到,我给定时器在不同情况下设置了两个回调函数:
hw_timer_set_func(led_turn);
hw_timer_set_func(led_off);
第一个函数led_turn实现的是led定时闪烁,第二个函数led_off实现的是led熄灭。熄灭的时候,定时器依然在跑,只是管脚始终都拉低了。有人会问,你把定时器关掉不行吗弄这么麻烦
这个~~~
如果我告诉你sdk里面没有硬件定时器关闭的函数,你信吗
事实就是这样,我翻了一遍hw_timer.c文件,里面只有开启定时器的函数,没有关闭的函数。但是,它提到了控制哪个寄存器的哪一位能开启定时器,所以,感兴趣的童鞋可以自己写一个硬件定时器关闭的函数。
保存、编译、下载一条龙,然后重新上电,按一下按键,你会发现led开始闪烁,再按一下,led熄灭了。
到此,硬件定时器和gpio中断的用法说完了。
链接:/s/1ajjsmoaf7s9fph160zs_sq
提取码:t1r6
除此之外,再说一下“icache_flash_attr”的用法。
打开esp8266的sdk,你会看到很多函数前面加了这个东西。这是啥(以下内容摘自乐鑫论坛)
这是sdk内部定一个的一个宏。简单来说,添加了 icache_flash_attr 宏的函数,将存放在 irom 中,cpu 仅在调用到它们的时候,将它们读到 cache 中运行;没有添加 icache_flash_attr 宏的函数,将在一开始上电运行时,就加载到 iram 中运行。
由于空间有限,无法将所有代码都一次性加载到 iram 中运行,因此在大部分函数前添加 icache_flash_attr 宏,放在 irom 中。
请注意,不要在中断处理函数中调用带有 icache_flash_attr 宏的函数,否则将引起异常。
esp8266_前言
esp8266_01搭建开发环境
esp8266_02程序的编译与下载
esp8266_03 sdk与makefile的基本用法
esp8266_04管脚控制与软件定时器
esp8266_05 esp8266有几个串口

资阳分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录