当前位置: 首页 > news >正文

ESP8266使用SDK软硬件定时执行函数

1、软件定时

        以下接口使用的定时器由软件实现,定时器的函数在任务中被执行。因为任务可能被中断,或者被其他高优先级的任务延迟,因此以下os_timer系列的接口并不能保证定时器精确执行。

注意:

①对于同一个 timer,os_timer_arm或os_timer_arm_us不能重复调用,必须先os_timer_disarm。②os_timer_setfn必须在 timer 未使能的情况下调用,在os_timer_arm或os_timer_arm_us之前或者os_timer_disarm之后。

1、主函数user_init中加入下列代码:

    static os_timer_t os_timer_user;//主函数之	用户自定义定时器函数os_timer_disarm (&os_timer_user);//取消定时器定时os_timer_setfn(&os_timer_user, (ETSTimerFunc *)(time_user), NULL);//设置定时器回调函数。使⽤用定时器,必须设置回调函数。os_timer_arm (&os_timer_user, 300, true);//使能毫秒级定时器

2、软件定时执行的函数

//软件定时器回调函数
void ICACHE_FLASH_ATTR
time_user(void){static x = 0;os_printf(" Number_X: %d !!!\r\n",x++);system_soft_wdt_feed();//这里我们喂下看门狗  ,不让看门狗复位
}

2、硬件定时

        相比软件定时来说硬件定时器则能精确执行。

注意:

①如果使用 NMI 中断源,且为自动填装的定时器,调用hw_timer_arm时参数val必须大于 100。

②如果使用 NMI 中断源,那么该定时器将为最高优先级,可打断其他 ISR。

③如果使用 FRC1 中断源,那么该定时器无法打断其他 ISR。

④hw_timer.c的接口不能跟 PWM 驱动接口函数同时使用,因为二者共用了同一个硬件定时器。

⑤硬件中断定时器的回调函数定义,请勿添加ICACHE_FLASH_ATTR宏。

⑥使用hw_timer.c的接口,请勿调用wifi_set_sleep_type(LIGHT_SLEEP);将⾃自动睡眠模式设置为 Light-sleep。因为 Light-sleep 在睡眠期间会停 CPU,停 CPU 期间不能响应 NMI 中断。

1、主函数user_init中加入下列代码:

    hw_timer_init (FRC1_SOURCE, 1);//初始化硬件ISR定时器hw_timer_set_func(hw_timer_sec);//设置定时器回调函数。使用定时器,必须设置回调函数。hw_timer_arm(1000000);//使能硬件中断定时器  1 秒

2、硬件定时执行的函数

void hw_timer_sec(void){static y = 0;os_printf(" Number_Y: %d !!!\r\n",y++);system_soft_wdt_feed();//这里我们喂下看门狗  ,不让看门狗复位
}

http://www.lryc.cn/news/62608.html

相关文章:

  • ThreadPoolExecutor源码阅读流程图
  • 如何通过筛选高质量爬虫IP提升爬虫效率?
  • C#中定义数组--字符串及数组操作
  • 嵌入式就业怎么样?
  • 用户订阅付费如何拆解分析?看这篇就够了
  • 智能合约中如何调用其他智能合约
  • python的多任务处理
  • Vue收集表单数据学习笔记
  • Linux搭建GitLab私有仓库,并内网穿透实现公网访问
  • SpringBoot项目防重复提交注解开发
  • 从软件哲学角度谈 Amazon SageMaker
  • C++内联函数
  • JAVA大师的秘籍:轻松掌握高质量代码之道
  • OpenGL入门教程之 变换
  • ASPICE详细介绍-4.车载项目为什么要符合ASPICE标准?
  • 一文彻底理解Java 17中的新特性密封类
  • 【Git 入门教程】第四节、Git冲突:如何解决版本控制的矛盾
  • c++验证用户输入合法性的示例代码
  • ctfshow web入门phpcve web311-315
  • gpt.4.0-gpt 国内版
  • 放弃手动测试,快来了解JMeter压测神器的安装和使用吧~~
  • SQL函数
  • 苦熬10年,国产操作系统“归零”,新操作系统上新,跟Excel很像
  • 什么是shell脚本和简单shell脚本练习
  • MySQL MyBatis
  • Leetcode力扣秋招刷题路-0802
  • 编程中最难的就是命名?这几招教你快速上手
  • NUXT规范及常见问题
  • 2023年Q1天猫空调品牌销量排行榜
  • 如何在比特币系统内创造人工生命