遛一遛8266的定时器
一:简述
硬件为ESP-LAUNCHER开发板(使用GPIO12)。
要求是某一定时间指示灯状态发生改变。
ESP8266定时功能的实现有两种方式:软件定时器和硬件定时器。
软件定时器的接口在/ESP8266_NONOS_SDK/include/osapi.h中,由于软件定时器的任务可能被中断,或者被
其他⾼高优先级的任务延迟,所以若想获取准确的定时任务,可以选择硬件定时器,但是硬件定时器不能与PWM接口函数同时使用,因为两者共用一个硬件中断定时器。
二:软件定时器的使用
- 首先,定义一个定时器的结构体。
- 其次,先进行关闭定时器,因为对于同⼀个 timer,os_timer_arm 或 os_timer_arm_us 不能重复调⽤,必须先os_timer_disarm。
- 再者,进行定时函数的回调。
- 最后,开启定时器。
- 程序:
static os_timer_t os_timer;//定义延时结构体void LED_INIT()
{uint32 i;PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);GPIO_DIS_OUTPUT(GPIO_ID_PIN(12));//设置IO13为输入i = ~GPIO_INPUT_GET(GPIO_ID_PIN(12));PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);//选择指示灯IO口GPIO_OUTPUT_SET(GPIO_ID_PIN(12),i);
}void ICACHE_FLASH_ATTR user_init()//初始化
{uart_init(115200, 115200);//设置串口0和串口1的波特率PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);//选择指示灯IO口GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);//默认指示灯不亮//软件延时函数练习os_timer_disarm (&os_timer);os_timer_setfn(&os_timer, (ETSTimerFunc *) (LED_INIT), NULL);os_timer_arm(&os_timer, 1000, true);
三:硬件定时器的使用
硬件中断定时器接口位于 /ESP8266_NONOS_SDK/examples/driver_lib/hw_timer.c中。
注意:硬件定时器的回调函数前不能添加 ICACHE_FLASH_ATTR 宏定义,中断响应不能存放在 Flash 中。
- 首先,确定中断源以及是否重装。
- 其次,确定定时器回调函数。
- 最后,启动定时器。
- 程序
void ICACHE_FLASH_ATTR user_init(void) {uart_init(57600, 57600);os_printf("SDK version:%s\n", system_get_sdk_version());PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1);//默认指示灯不亮hw_timer_init(NMI_SOURCE, 0);//初始化确定使用的中断源以及是否自动填装hw_timer_set_func(LED_INIT);hw_timer_arm(500);}
如有错误,请批评指正。
遛一遛8266的定时器相关推荐
- 【机器学习代码模板】把你的线性回归模型拉出来遛一遛
前言 这是[机器学习代码模板]系列的第三篇文章,之后会持续更新,敬请关注! 与第上一篇文章相比增加的地方 将数据集划分为training_set和test_set 在training_set上训练模型 ...
- 【MicroPython ESP32/8266】定时器中断示例解析
[MicroPython ESP32/8266]定时器中断示例解析 ✨本案例基于Thonny平台开发.✨ 相关篇<ESP32 Micropython 定时器中断的使用示例>
- 波士顿动力机器狗学会「撒尿」!拉风狗还不上街遛一遛?
2021-04-14 15:57:20 来源:verge 编辑:yaxin [导读]波士顿动力机器狗又get一项新技能.近日,一位油管博主Michael Reeves利用自己的技术专长,把机器狗Spo ...
- 一款好玩的关联微信运动的云遛狗微信小程序
一款好玩的关联微信运动的云遛狗微信小程序 superpet_dog 介绍 微信小程序搜索 "汪汪旺旺旺" 进行体验. 使用微信小程序云开发技术,开发的一款好玩的小程序.关联微信 ...
- 2017 ACM/ICPC 南宁赛区小结 By JSB @ Reconquista
Statistics TYPE: Onsite Contest NAME: 2017 - ICPC - Asia Nanning PLAT: pc^2 TIME: 2017/11/26 09:00-1 ...
- 架构师写的BUG,非比寻常
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 部门新来了个架构师,BAT背景,住在三环,开宝马上班,有车位. 小 ...
- 一只53万!波士顿动力网红机器狗开售,充电器价格1万多!
白交 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI Oh my God-- 屡屡全球刷屏的网红,现在终于可以买回家. 波士顿动力机机器狗--那只可甜可咸.可宠可用的地球首富同款,万万没 ...
- 万字详文告诉你如何做 Code Review
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习实验室 前言 作为公司代码委员会 golang 分 ...
- 非科班的我如何自学Python在一线城市找到一份15k的offer的?
大家好,我是PythonYu,今天是我kotlin入门后,入行Python后,第一次总结下自己的经验! 12年从三流大学毕业后,刚开始接触的是java,后来入门了kotlin,后来我学习了Python ...
最新文章
- DHCP Snooping的作用
- linux container容器技术框架性理解
- 百度网络推广介绍网站在更换老域名时都需注意哪些?
- ThreadLocal线程复用导致的安全问题
- stm32 web ajax,STM32的WEB服务器怎么返回AJAX的JSON数据格式的?求教!
- IDEA在debug环境下,端口被占用
- jenkins~集群分发功能的具体实现
- 祝福神器!微信推出“表情搜索”功能,支持合成个性化祝福表情
- Vivado Launching SDK Importing Hardware Specification error的解决方法
- 顾樵数学物理方法_圣彼得堡国立大学硕士研究生:物理与天文学
- vue获取屏幕高度赋值给div与获取div本身的高度
- windows 下 tomcat 开机自启动
- 百度为手游盛世添把火
- python查看bit_python 实现12bit灰度图像映射到8bit显示的方法
- python入门第三课(初中生学Python)
- Nginx的http_access_module模块
- 清空input的type为file时的值
- Vi编辑器的使用方法及用vi编辑器编写一个C程序
- 天线巴伦制作和原理_巴伦的原理、设计、制作
- js中公有方法、特权方法、静态方法
热门文章
- 一套靠谱的外贸型服装鞋业系统长啥样?
- Day19-22 2021/10/13-16 JAVA贪吃蛇 全注释版
- iOS开发之网络监听(一)Reachability
- plt的默认风格/样式设置 or 将plt.rcParams恢复恢复到默认参数设置
- Gradually Vanishing Bridge for Adversarial Domain Adaptation
- 基础乐理--增长音值的补充记号
- Leetcode——226. 翻转二叉树
- 客户端设置超时,max_fails失效----问题分析
- Zabbix6.2这些新特性太棒了,手把书教你在Linux部署Zabbix6.2,速度收藏!
- 多级表头 el-table-column的使用