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

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

3天内不再提示

Air780E的心跳:定时器精确计时的科学与艺术

青山老竹农 来源:jf_82863998 作者:jf_82863998 2024-11-11 09:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大家都知道定时器在多种应用场景中都发挥着重要作用,如定时发送数据、周期性检查传感器状态等,今天我以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 开发板)。通常,这种数据线的外观如下示意图所示:

wKgaoWcww9aAXs5_AAPPzv5F1WQ522.png

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

2.5 组装硬件环境

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

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

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

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

wKgZoWcww-WAc_9gABMlQybxmzQ285.png

wKgZoWcww_WAAhAMABTU5P9AXBs419.png

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

wKgaoWcwxACAUhy6ABCTvLa2340314.png

三、准备软件环境

在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。

3.1 Luatools 工具

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

下载地址:

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

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

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

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

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

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

wKgZoWcwxCWAQfb2AAIYoCgYFPM273.png

3.2 烧录代码

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

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

wKgaoWcwxDCAQoI3AADXLivgav4811.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 使用如图所示固件

wKgZoWcwxECAfOHoAAEq37b8M08867.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键然后点按重启键即可。

wKgaoWcwxFaAPszcABVIiLnk9Zs158.png

3.2.6识别电脑的正确端口

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

wKgaoWcwxGCAWgnCAAMGtcpEGDE973.png

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

3.2.7新建项目

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

wKgZoWcwxGqAeJJHAAGKYdA91-0063.png

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

wKgZoWcwxHSAQKOKAAGbYJ51Cxs634.png

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

wKgaoWcwxH6AHFqbAASuEfdcOU4487.png

3.2.8开始烧录

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

wKgaoWcwxIiADl3TAAXN6Fw2Qtw970.png

wKgZoWcwxJOAEoNPAAQ8Bwzz8Kw988.png

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

wKgaoWcwxJ-AKQp8AADqsUFAlGM155.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(可选):传递给回调函数的参数,可以是多个。

例子:

wKgZoWcwxLWADa_7AAjvrNXzDIY505.pngwKgaoWcwxMKAT0xKAAGN2q74SKs546.png

4.4 sys.timerStop

功能:

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

函数原型:

sys.timerStop(timerId)

参数:

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

例子:

wKgaoWcwxMyAaqXoAADJuxvArxc630.png

4.5 sys.timerLoopStart

功能:

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

函数原型:

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

参数:

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

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

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

返回值:

返回定时器的唯一标识符

timerId

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

例子:

wKgZoWcwxNmAKwMzAAlswod7fnw158.png

4.6sys.timerStopAll

功能:

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

函数原型:

sys.timerStopAll([fnc])

参数:

fnc

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

返回值:

无。

例子:

wKgZoWcwxOWATGG7AAXyXmNQydE474.png

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

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

5.1.1成果运行精彩呈现

wKgaoWcwxPOAdvkKAAZLT6u5Uuc452.png

5.1.2完整实例深度剖析

wKgZoWcwxQ2AJcIBAAemNZkpPL0398.pngwKgaoWcwxRuAcYWLAAcWfsiCg24025.png

六、常见问题

6.1 回调函数执行异常:

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

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

6.2 定时器冲突:

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

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

6.3 资源占用问题:

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

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

6.4 定时器 ID 管理:

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

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

6.5 定时器重复启动问题:

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

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

七、扩展

7.1 定时器的嵌套与递归

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

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

7.2 定时器的动态调整

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

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

分享完毕

审核编辑 黄宇

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

    关注

    60

    文章

    8374

    浏览量

    281802
  • 物联网
    +关注

    关注

    2939

    文章

    47350

    浏览量

    408297
  • 定时器
    +关注

    关注

    23

    文章

    3361

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用系统定时器SysTick来实现精确延时微秒和毫秒函数

    Cortex-M内核MCU都有的一个定时器,所以以上延时微秒和延时毫秒的函数适用于任何 Cortex-M内核的MCU。有了精确延时函数,那么使用通用GPIO软件模拟一些通信协议,如IIC、SPI等串行协议,就可以驱动很多硬件设备了,如EEPROM、温湿度传感
    发表于 11-20 07:12

    实战Air780EPM:构建4G共享网关,服务WiFi与有线设备!

    通过Air780EPM开发板,我们可以轻松实现4G网络作为数据出口,为周边的WiFi设备和以太网设备提供互联网共享,适用于移动办公、远程部署等场景。 一、多网融合概述   Air780EPM 开发板
    的头像 发表于 09-30 16:03 896次阅读
    实战<b class='flag-5'>Air780</b>EPM:构建4G共享网关,服务WiFi与有线设备!

    SysTick系统滴答定时器简介

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

    Air780EGH开源代码来袭!定位功能快速入门指南

    欢迎探索Air780EGH开源生态!最新版本解锁定位功能源代码,无论你是新手还是资深开发者,都能通过简洁的示例代码快速上手。从初始化配置到实时定位数据获取,一站式解决定位开发痛点。 下文将以
    的头像 发表于 07-29 16:13 430次阅读
    <b class='flag-5'>Air780</b>EGH开源代码来袭!定位功能快速入门指南

    揭秘Air780EGH定位功能:源码开放助力极速开发 !

    Air780EGH定位模块源代码全面开放!无需复杂前置知识,只需跟随本文教程,即可从零开始搭建定位系统。代码注释清晰,示例完整,助你短时间内掌握定位功能核心用法。 下文将以Air780EGH核心板为
    的头像 发表于 07-29 16:11 496次阅读
    揭秘<b class='flag-5'>Air780</b>EGH定位功能:源码开放助力极速开发 !

    Air8101多网融合战略升级:Air780EPM模块助力4G联网落地

    在物联网通信技术持续迭代的背景下,Air8101通过战略级模块外挂——Air780EPM,正式迈入4G联网时代。多网融合架构的完善,使设备在复杂环境中仍能保持高速、稳定的数据传输性能,推动智能化
    的头像 发表于 06-23 16:53 378次阅读
    <b class='flag-5'>Air</b>8101多网融合战略升级:<b class='flag-5'>Air780</b>EPM模块助力4G联网落地

    stm32H743定时器溢出的原因?怎么解决?

    我利用定时器更新中断实现软件计时定时时间是固定的按照{10ms, 20ms,650ms, 50ms,50ms}周期性进行的。由于下一次的计时时间是需要在
    发表于 06-23 08:26

    解锁Air780EPM:N种GPIO操控LED的实战技巧!

    在物联网项目中,灵活使用Air780EPM的GPIO控制LED至关重要。本文将展示实现方式,涵盖硬件配置与软件编程,满足不同场景需求。 今天特别分享基于Air780EPM的GPIO控制LED实现方案
    的头像 发表于 05-28 16:56 567次阅读
    解锁<b class='flag-5'>Air780</b>EPM:N种GPIO操控LED的实战技巧!

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

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

    MCU定时器/计数

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

    Air780EPM 模块串口电路设计硬件指导

    主要的通信接口,承担着控制,数据传输,外设通信等重要功能。基本上绝大部分的 Cat.1 应用场景都会用到。而 Air780EPM 模块的串口特性和使用要求上与通常的 MCU 串口会有些不同,导致在第一次用 Air780EPM 模块做设
    的头像 发表于 03-07 17:56 603次阅读
    <b class='flag-5'>Air780</b>EPM 模块串口电路设计硬件指导

    功耗表现最佳有没有?——Air780EPS

    今天一起来聊聊Air780EPS模组~ 一、Air780EPS核心信息描述 软件开发: Air780EPS软件上既支持传统的AT指令,也支持基于Lua脚本开发的嵌入操作系统LuatOS。 外设支持
    的头像 发表于 01-10 15:29 912次阅读
    功耗表现最佳有没有?——<b class='flag-5'>Air780</b>EPS

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

    或周期性地执行代码段,为物联网设备的运行提供了精确的时间控制。在多种应用场景中都发挥着重要作用,例如:定时发送数据、周期性检查传感状态等。 Air201最新资料下载: www.
    的头像 发表于 12-31 14:30 776次阅读
    <b class='flag-5'>定时器</b>已安排!开发小白看过来~

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

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

    要Open开发,又要低功耗低成本?建议等新方案

    、联通三大运营商。 仅比Air700E系列相对大一些: Air700ECQ/Air700EAQ/Air700EMQ; 与Air780E系列模
    的头像 发表于 12-24 17:09 726次阅读
    要Open开发,又要低功耗低成本?建议等新方案