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

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

3天内不再提示

定时器技术:Air780E如何革新定时任务管理?

合宙LuatOS 来源:合宙LuatOS 作者:合宙LuatOS 2024-11-07 13:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天讲的是关于Air780E如何革新定时任务管理的内容,希望大家有所收获。

一、定时器(timer)的概述

在Air780E模组搭载的LuatOS系统中,定时器(timer)是一项基础且关键的服务。它允许开发者在特定的时间点或周期性地执行代码段,为物联网设备的运行提供了精确的时间控制。

定时器在多种应用场景中都发挥着重要作用,如定时发送数据、周期性检查传感器状态等。

二、准备硬件环境

“古人云:‘工欲善其事,必先利其器。’在深入介绍本功能示例之前,我们首先需要确保以下硬件环境的准备工作已经完成。”

2.1 Air780E 开发板

本demo使用的是 Air780E 核心板,

此核心板的详细使用说明参考:

https://docs.openluat.com/air780e/product/

Air780E 产品手册公用产品资料 - 模组资料中心 (openluat.com)中的 << 开发板 Core_Air780E 使用说明 VX.X.X.pdf>>,写这篇文章时最新版本的使用说明为:20240419155721583_开发板Core_Air780E使用说明V1.0.5.pdf (vue2.cn);核心板使用过程中遇到任何问题,可以直接参考这份使用说明 pdf 文档。

2.2 SIM

请准备一张可正常上网的SIM卡,该卡可以是物联网卡或您的个人手机卡。

特别提醒:

请确保SIM卡未欠费且网络功能正常,以便顺利进行后续操作。

2.3 PC 电脑

请准备一台配备USB接口且能够正常上网的电脑。

2.4 数据通信线

请准备一根用于连接 Air780E 开发板和 PC 电脑的数据线,该数据线将实现业务逻辑的控制与交互。您有两种选择:

USB 数据线(其一端为 Type-C 接口,用于连接 Air780E 开发板)。通常,这种数据线的外观如下示意图所示:

wKgZomcsUyGAMAOQAAPEyNj9gL8007.png

普通的手机USB数据线一般都可以直接使用。

2.5 组装硬件环境

2.5.1 请按照 SIM 卡槽上的指示方向正确插入 SIM 卡,务必确保插入方向正确,避免插反导致损坏!

通常,插入 SIM 卡的步骤如下:

将 SIM 卡的金属接触面朝下,对准卡槽的开口。

用力平稳地将 SIM 卡推入卡槽,直至听到“咔嚓”一声,表示 SIM 卡已正确安装到位。

wKgZomcsUzOARQ9QABKZEwPfkUw541.png

wKgZomcsU0KAJqhuABHueDbfKOo384.png

2.5.2 USB 数据线,连接电脑和 Air780E 开发板,如下图所示:

wKgZoWcsU1SAGPl7AA7JkrFGepU686.png

三、准备软件环境

“凡事预则立,不预则废。”在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。

3.1 Luatools 工具

要想烧录 AT 固件到 4G 模组中,需要用到合宙的强大的调试工具:Luatools;

下载地址:

https://docs.openluat.com/Luatools/Luatools 工具集具备以下几大核心功能:

一键获取最新固件:自动连接合宙服务器,轻松下载最新的合宙模组固件。

固件与脚本烧录:便捷地将固件及脚本文件烧录至目标模组中。

串口日志管理:实时查看模组通过串口输出的日志信息,并支持保存功能。

串口调试助手:提供简洁的串口调试界面,满足基本的串口通信测试需求。

Luatools 下载之后, 无需安装, 解压到你的硬盘,点击 Luatools_v3.exe 运行,出现如下界面,就代表 Luatools 安装成功了:

wKgZomcsU2iAVVZ-AAIMIzOwzf0209.png

3.2 烧录代码

首先要说明一点:脚本代码, 要和固件的 LuatOS-SoC_V1112_EC618_FULL.soc 文件一起烧录。

整体压缩文件:内含有 文件一:Core 固件 和 文件二:定时器(timer)脚本文件 如下图所示。

wKgZoWcsU3aARdIrAADD5N7CZPI809.png

3.2.1 压缩文件:完整文件包

下载地址:

https://docs.openluat.com/air780e/luatos/app/service/timer/

3.2.2 压缩包内部文件

文件一:Core 固件文件二:定时器(timer)脚本文件

3.2.3找到烧录的固件文件

官网下载,底层 core 下载地址:SDK&Demo - 合宙文档中心 (openluat.com)LuatOS 底层 core 注:本 demo 使用如图所示固件

wKgZoWcsU4iAXMUYAAEL5OAnn9U735.png

3.2.4正确连接电脑和4G模组电路板

使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线;

3.2.5识别4G模组的boot引脚

在下载之前,要用模组的boot引脚触发下载,也就是说,要把4G模组的boot引脚拉到1.8v,或者直接把boot引脚和VDD_EXT引脚相连。我们要在按下BOOT按键时让模块开机,就可以进入下载模式了。具体到Air780E开发板:1、当我们模块没开机时,按着BOOT键然后长按PWR开机。2、当我们模块开机时,按着BOOT键然后点按重启键即可。

wKgaoWcsU5-AMg9IABRUJPWOk28384.png

3.2.6识别电脑的正确端口

判断是否进入 BOOT 模式:模块上电,此时在电脑的设备管理器中,查看串口设备, 会出现一个端口表示进入了 boot 下载模式,如下图所示:

wKgaoWcsU6uAejj8AAK5XiAhcPA231.png

当设备管理器出现了 3 个连续数字的 com 端口,并且每个数字都大于 4,这时候, 硬件连接上就绪状态,恭喜你,可以进行烧录了!

3.2.7新建项目

首先,确保你的 Luatools 的版本大于或者等于 3.0.6 版本.在 Luatools 的左上角上有版本显示的,如图所示:

wKgZoWcsU7WAOu4EAAFwv9g0k88955.png

Luatools 版本没问题的话, 就点击 Luatools 右上角的“项目管理测试”按钮,如下图所示:

wKgZoWcsU8OATyKZAAGB7cvIxS4209.png

这时会弹出项目管理和烧录管理的对话框,如下图:

wKgaoWcsU9CADRYnAARIje6oMSY601.png

3.2.8开始烧录

选择780E板子对应的底层core和刚改的main.lua脚本文件。下载到板子中。

wKgaoWcsU92ABL-lAAU789h0c5U536.png

wKgZoWcsU-qAQTb7AAPfVfKw_Fs422.png

点击下载后,我们需要进入 boot 模式才能正常下载。

wKgaoWcsU_eAbSEMAADUt0HPriU550.png

四、定时器(timer)基本用法

4.1 本教程实现的功能定义:

此次 demo 验证单次触发定时器和周期性触发定时器的基本功能。

尝试展示了如何通过定时器回调函数执行特定任务。

验证定时 sys.timerStopAll 和 sys.timerStop 的用法。

4.2 文章内容引用

780E 开发板软硬件资料 :
Air780E 产品手册公用产品资料
https://docs.openluat.com/air780e/luatos/app/service/timer/

以上接口函数不做详细介绍,可通过此链接查看具体介绍:sys 库;sys - sys库 - LuatOS 文档

4.3sys.timerStart

功能:

启动一个定时器,该定时器在指定的延迟时间后执行回调函数,或者如果指定了重复次数,则周期性地执行回调函数。

函数原型:

local timerId = sys.timerStart(func, timeout, repeat, arg1, arg2, ..., argN)

参数:

func:定时器触发时要执行的回调函数。

timeout:定时器启动后的延迟时间(以毫秒为单位),即定时器触发前需要等待的时间。

repeat(可选):指定定时器是否重复触发。如果为 0,则定时器只触发一次;如果为正整数,则定时器会重复触发指定的次数;如果为负整数(如-1),则定时器可能表示无限重复(具体取决于 LuatOS 的实现,但通常-1 用于无限循环)。

arg1, arg2, ..., argN(可选):传递给回调函数的参数,可以是多个。

例子:

wKgaomcsVBeAA-bwAAmHWjZ0Q0s710.png

4.4 sys.timerStop

功能:

停止一个已启动的定时器。

函数原型:

sys.timerStop(timerId)

参数:

timerId:要停止的定时器的唯一标识符。

例子:

wKgZomcsVDyAR4P0AADAF57zlrk402.png

4.5 sys.timerLoopStart

功能:

启动一个周期性定时器,该定时器会按照指定的时间间隔反复执行回调函数。。

函数原型:

local timerId = sys.timerLoopStart(func, timeout, arg1, arg2, ..., argN)

参数:

func:定时器触发时要执行的回调函数。

timeout:定时器的时间间隔(以毫秒为单位),即每次触发之间的等待时间。

arg1, arg2, ..., argN:传递给回调函数的参数(可选),可以是多个。

返回值:

返回定时器的唯一标识符

timerId

,该标识符可用于后续停止定时器。

例子:

wKgaomcsVEqAQ9UxAAio14gm5Ag188.png

4.6sys.timerStopAll

功能:

停止所有由指定回调函数启动的定时器,或者如果没有提供回调函数参数,则停止所有定时器。

函数原型:

sys.timerStopAll([fnc])

参数:

fnc

(可选):一个回调函数。如果提供了这个参数,那么只有由这个回调函数启动的定时器会被停止。如果没有提供这个参数,那么所有的定时器都会被停止。

返回值:

无。

例子:

wKgZoWcsVFeAVABVAAWA3hkpYPU360.png

五、定时器(timer)整体演示

5.1 成果演示与深度解析:视频 + 图文全面展示

5.1.1成果运行精彩呈现

wKgaoWcsVGmAT5pVAAW2gEXeqg4621.png

5.1.2演示视频生动展示

wKgZoWcsVLWABuyVAAR688NiX90124.png

5.1.3完整实例深度剖析

wKgaoWcsVMeADut_AAfSouvOqx4441.png

wKgaoWcsVNiADEHwAAWSUlQNlSc321.png

六、常见问题

6.1 回调函数执行异常:

如果定时器的回调函数中存在异常处理不当的情况,可能会导致程序崩溃或产生不可预知的行为。

需要在回调函数中做好异常处理,确保程序的健壮性。

6.2 定时器冲突:

在多个定时器同时存在的情况下,可能会存在定时器冲突的问题,即多个定时器同时触发或相互干扰。

需要合理设计定时器的触发时间和周期,避免冲突的发生。

6.3 资源占用问题:

定时器的创建、启动和停止等操作可能会占用一定的系统资源,如内存、CPU 等。

在资源受限的嵌入式系统中,需要合理管理定时器的使用,避免资源过度占用。

6.4 定时器 ID 管理:

在使用定时器接口函数时,通常会返回一个定时器 ID 用于后续操作。如果定时器 ID 管理不当,可能会导致无法正确停止或删除定时器。

需要建立良好的定时器 ID 管理机制,确保定时器的正确操作。

6.5 定时器重复启动问题:

在某些情况下,可能会不小心重复启动同一个定时器,导致多个相同的定时器同时存在。

这可能会导致资源浪费或任务重复执行。需要确保定时器的唯一性和正确性。

七、扩展

7.1 定时器的嵌套与递归

嵌套定时器:在某些情况下,一个定时器的回调函数可能会启动另一个定时器。这种嵌套定时器的使用需要特别小心,以避免无限递归或资源耗尽。

递归定时器:递归定时器是指一个定时器在其回调函数中重新启动自己。这种用法需要特别注意避免无限循环和堆栈溢出。

7.2 定时器的动态调整

周期调整:在某些应用中,可能需要动态调整定时器的周期。这通常涉及停止当前定时器并重新启动一个新周期的定时器。

任务优先级调整:对于某些实时性要求较高的任务,可能需要动态调整定时器的优先级,以确保任务能够及时执行。

审核编辑 黄宇

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

    关注

    15

    文章

    5607

    浏览量

    123256
  • 物联网
    +关注

    关注

    2939

    文章

    47324

    浏览量

    407929
  • 定时器
    +关注

    关注

    23

    文章

    3361

    浏览量

    121749
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PWM、定时器、SysTick 区别及应用场景

    在单片机和嵌入式开发中,经常会遇到PWM(脉宽调制)、定时器、SysTick(系统滴答定时器)这几个词。很多初学者容易把它们混为一谈,以为都是“定时相关的东西”。其实,它们在本质和应用上有明显差别
    的头像 发表于 11-17 10:53 230次阅读
    PWM、<b class='flag-5'>定时器</b>、SysTick 区别及应用场景

    ‌TLC551 LinCMOS™ 定时器芯片技术文档总结

    TLC551 是使用 TI LinCMOS 制造的单片定时电路^TM的^过程。这定时器与 CMOS、TTL 和 MOS 逻辑完全兼容,工作频率高达 2 MHz。与 NE555 定时器相比,该器件由于输入阻抗高,因此使用更小的
    的头像 发表于 09-24 09:16 642次阅读
    ‌TLC551 LinCMOS™ <b class='flag-5'>定时器</b>芯片<b class='flag-5'>技术</b>文档总结

    SysTick系统滴答定时器简介

    SysTick—系统定时器是属于CM33内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数,计数每计数一次的时间为 1/SYSCLK,一般我们设置系统时
    的头像 发表于 09-23 09:50 1335次阅读
    SysTick系统滴答<b class='flag-5'>定时器</b>简介

    ‌TPL5010-Q1 纳米功耗系统定时器(带看门狗功能)技术文档摘要

    TPL5010-Q1 Nano 定时器是一款低功耗、符合 AEC-Q100 标准的定时器,带有看门狗 该功能非常适合占空比或电池供电应用中的系统唤醒。在这样的系统中 微控制定时器可用
    的头像 发表于 09-13 10:01 1266次阅读
    ‌TPL5010-Q1 纳米功耗系统<b class='flag-5'>定时器</b>(带看门狗功能)<b class='flag-5'>技术</b>文档摘要

    Crontab定时任务完全指南

    在凌晨3点,当大多数人还在熟睡时,一位运维工程师的手机突然响起——线上数据库备份失败了。他匆忙起床,打开电脑,手动执行备份脚本,整个过程耗时2小时。这样的场景,在我刚入行时经常遇到。直到我真正掌握了crontab定时任务,才彻底摆脱了"人肉运维"的窘境。
    的头像 发表于 09-05 10:03 595次阅读

    大彩讲堂:VisualHMI-LUA教程-定时器的使用指南

    定时器的使用
    的头像 发表于 08-31 16:59 850次阅读
    大彩讲堂:VisualHMI-LUA教程-<b class='flag-5'>定时器</b>的使用指南

    TPS3435 Nano IQ精密超时看门狗定时器技术解析与应用指南

    Texas Instruments TPS3435/TPS3435-Q1 Nano I~Q~ 精确超时看门狗定时器是一款250nA(典型值)超低功耗器件,具有可编程超时看门狗定时器。该看门狗定时器
    的头像 发表于 08-26 16:20 713次阅读
    TPS3435 Nano IQ精密超时看门狗<b class='flag-5'>定时器</b><b class='flag-5'>技术</b>解析与应用指南

    DS560DF410EVM重定时器评估模块技术解析与应用指南

    的4通道多速率重定时器。该器件支持在19.6GBd至28.9GBdPAM4和NRZ数据速率范围内重新定时运行。印刷电路板 (PCB) 上集成了物理交流耦合电容(TX 与 RX),无需使用外部电容。DS560DF410依赖两个电源电压,通过板载电源树在评估模块上进行
    的头像 发表于 08-26 15:56 724次阅读
    DS560DF410EVM重<b class='flag-5'>定时器</b>评估模块<b class='flag-5'>技术</b>解析与应用指南

    基于 AS32X601 微控制定时器模块(TIM)技术研究与应用实践

    阐述了高级定时器和通用定时器的计数精度、预分频可编程性,以及输入捕获、输出比较、PWM生成等关键功能,并结合数据手册补充了大量技术细节,
    的头像 发表于 08-19 16:44 597次阅读

    揭秘Air780EPM开发陷阱:20个避坑指南与最佳解决方案

    :www.air780epm.cn 问题01: Air780EPM在PSM+模式下,dtimer定时器可以开几个?   答案: 同一时间只能有64个定时器
    的头像 发表于 05-21 16:04 599次阅读
    揭秘<b class='flag-5'>Air780</b>EPM开发陷阱:20个避坑指南与最佳解决方案

    MCU定时器/计数

    RISC-V核低功耗MCU通过灵活的定时器架构、低功耗模式适配及硬件级中断优化,在工业控制、智能家居等场景中实现高精度计时与能耗控制的协同设计,满足复杂任务调度与实时响应的双重需求‌。 一、‌硬件
    的头像 发表于 04-27 13:54 592次阅读

    【第四章 定时任务】手把手教你玩转新版正点原子云

    【第四章 定时任务】手把手教你玩转新版正点原子云 承接上篇,除了报警联动这个功能,原子云还有一个特色功能也是各开发者喜欢用的,定时任务功能。 【正点原子】云平台:原子云(点击登录原子云) 前言
    发表于 03-13 10:19

    定时器已安排!开发小白看过来~

    本文将为您详细介绍Air201定时器的基本操作与设置,确保您轻松上手,包教包会! 在Air201模组搭载的LuatOS系统中,定时器(timer)是一项基础且关键的服务。 它允许开发者
    的头像 发表于 12-31 14:30 767次阅读
    <b class='flag-5'>定时器</b>已安排!开发小白看过来~

    抄作业!看门狗定时器必备知识

    Air201在模组内部集成了硬件看门狗,今天就一起来聊聊~ 本文将带你了解看门狗的工作原理、应用架构、定时时间设置、软硬件看门狗的区别,以及看门狗定时器的典型应用场景及关键设计因素等内容。 同时通过
    的头像 发表于 12-30 14:44 1080次阅读
    抄作业!看门狗<b class='flag-5'>定时器</b>必备知识