1815_ChibiOS中的虚拟定时器

news2024/11/29 11:41:51

         全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com)

1. 这个功能其实类似于FreeRTOS的设计,在FreeRTOS中也有这样的设计。

2. 一次性的定时器,这个不仅在FreeRTOS中见过,在我用过的一些商用的操作系统中也有。

3. 虚拟定时器的操作方法有启动、提前停止或者到达定时时间之后触发一个回调。

4. 由于回调动作都是从ISR中触发的,因此涉及到的API调用需要满足I类的接口要求。

5. 如果采用tick的模式来实现有几点不好的地方:负荷高、精度差、会给系统增加抖动且功耗会增加。

1. 如果采用无tick的模式,那么可以提供一些好的特点:低功耗、抖动影响小、精度更高。

2. 但是,tickless的模式也有一些需要考虑的弊端,比如说:实现起来更复杂;需要硬件间似乎器的支持,虽然16bit的计数器就基本满足了,但是建议使用32bit的计数器;行为与其他的实现模式略有不同;可能会增加内核的大小等。

3. 关于这部分的API中有两个需要单独注意一下,一个是这个需要初始化。其实,对等其他的OS可能叫做创建,但是习惯了之前的思维模式可能这里的初始化会意识不到。另一点就是这里提供了一个定时器已经设置好了的情况下的快速reset方法。

         这里的这种设计,实现不断的LED驱动点亮的效果有点添油燃灯的感觉。通过不断地触发来进行续命。

         如何实现一个重复的翻转触发?这里的例子提供的方式是不断重新设置软定时器,这样回调之中调用回调就可以一直触发。这种设计是十分有趣的。

         这个例子的前面有一段说明,解释这样的设计可以通过一个命令就实现这个LED的闪烁功能的开启。最初没有理解是什么概念,后来仔细理解了一下。应该是这里提供的代码并不是顺序执行的,只是提供了两段代码来说明如何进行这个功能的启动以及关闭。

         如果想要让这个LED闪烁,只需要设置激活这样的一个虚拟定时器即可。在回调中,它会实现自己的重复触发。但是无论什么时候,停止这个虚拟计数器并且关闭LED都可以启动一个停止处理的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1111158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

shell命令以及运行原理和lLinux权限

shell命令以及运行原理 什么是shell shell是操作系统的外壳程序统称,我们是通过shell去和操作系统沟通的。 从技术角度,shell最简单的定义就是命令行解释器,主要包含两个功能: 将使用者的命令翻译给核心处理 将核心的处理结果…

《数据结构、算法与应用C++语言描述》使用C++语言实现链表队列

《数据结构、算法与应用C语言描述》使用C语言实现链表队列 定义 队列的定义 队列(queue)是一个线性表,其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾(back或rear),删除元素的那一端称…

告别传统纸质期刊,电子期刊更环保更快捷

​【新发现】随着科技的发展,电子期刊逐渐取代了传统的纸质期刊,成为人们获取信息的新选择。电子期刊不仅环保,而且快捷方便,但是你知道怎么制作电子期刊吗? 不会制作的可以试试我推荐的这个网站----FLBOOK电子杂志制作…

Simulink 最基础教程(一)

1.1基本概念 一个典型的Simulink模型大致如上图这样: 1)模块 block:图中画圈的那些,每个模块可以完成一些特定的任务,类似MATLAB中函数的概念。软件提供了很多模块,当然也可以自定义新的模块 2&#xff0…

进阶JAVA篇- Collection 类的常用的API与 Collection 集合的遍历方式

目录 1.0 Collection 类的说明 1.1 Collection 类中的实例方法 2.0 Collection 集合的遍历方式(重点) 2.1 使用迭代器( Iterator )进行遍历 2.2 使用增强型 for 循环进行遍历 2.3 使用 Java 8的 Stream API 进行遍历(使…

线程安全之锁的原理

🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️林 子       🛰️博客专栏:✈️ Linux       🛰️社区 :✈️ 进步学堂       &#x1f6f0…

思维模型 鸟笼效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。 1 鸟笼效应的应用 1.1 购物中的鸟笼效应 1 漂亮鞋子的故事 假设一个人在商场看到一双漂亮的鞋子,并冲动地购买了它们。当他回到家后,他发现这双鞋子并不适合他的…

【QT】QListWidget

新建项目 list widget,做了布局 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// listWidget的使用,基于itemQListWidgetItem* item …

【电子通识】USB发展历史

USB接口自1994年推出以来,经过29年的发展,经过USB1.0/1.1、USB2.0、USB3.x,发展到了现在的USB4;传输速率也从最开始的1.5Mbps,大幅提高到了最新的40Gbps。 USB1.0 1996年1月15日推出USB1.0接口规范规定低速传输速率为…

数字孪生软件架构选BS还是CS?不,我们选择CSaaS!

BS(Browser/Server)和CS(Client/Server)是两种不同的软件架构模式,具有不同的特点和优缺点。 BS(Browser/Server)架构 BS架构指的是基于浏览器和服务器的软件架构,客户端通常是一个…

1814_ChibiOS中的时间以及时间间隔处理

全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 1. 时间的相关配置,有tick的计数精度、时钟频率、间隔时间精度、时间类型大小等不同的配置。这些参数,涉及到系统的时间计数…

JVMGC复习

TLAB:默认给每一个线程开辟一块内存空间存放线程自己的对象 Class对象是存放在堆区的,不是方法区,类的元数据元数据并不是类的Class对象,Class对象是加载的最终产品,类的方法代码,变量名,方法名&#xff0c…

解决windows中被占端口问题(实测有效)

1、用管理员身份打开cmd 2、输入命令查找所被占的端口号 例:8902 netstat -ano | findstr 8902终结被占端口号的进程 例:端口号为8080,则查找到的pid为18524 taskkill /t /f /pid 18524强制(/F参数) 子进程&#x…

小公司如何成功申请企业邮箱

对于小公司来说拥有专业的企业邮箱不仅有助于提升公司形象,还能有效提高工作效率。小公司怎么申请企业邮箱?以下是一些步骤和建议供您参考。 需要明确公司的需求。 这包括确定所需用户账户的数量(一般是目前使用人数再加上几个备用的邮箱&…

Docker入门到精通教程

Docker是什么 Docker是一个开源的应用容器引擎,它基于Go语言并遵从Apache2.0协议开源。容器技术是和我们的宿主机共享硬件资源及操作系统,实现资源的动态分配,在资源受到隔离的进程中运行应用程序及其依赖关系。 Docker可帮助更快地打包、测…

Redis实现附近商户

GEO数据结构的基本用法 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息&#xf…

【广州华锐互动】VR石油钻井井控实训系统

在过去的几十年中,石油工业的发展速度一直在加快。为了适应这个快速发展的行业,需要新的技术和工具,而VR(虚拟现实)技术正是其中之一。本文将探讨VR石油钻井井控实训系统在石油工业教育中的应用。 在真实的钻井环境中&…

接口管理神器Apipost

自诞生以来,Apipost凭借其简洁直观的用户界面、强大的功能以及简单、易上手的操作,让Apipost成为了开发人员不可或缺的工具。本文将详细介绍Apipost的主要功能和使用方法,帮助大家更好地了解这款优秀的API开发工具。 下载安装 直接进入Apip…

Stable Diffusion WebUI扩展a1111-sd-webui-tagcomplete之Booru风格Tag自动补全功能详细介绍

安装地址 直接附上地址先: Ranting8323 / A1111 Sd Webui Tagcomplete GitCodeGitCode——开源代码托管平台,独立第三方开源社区,Git/Github/Gitlabhttps://gitcode.net/ranting8323/a1111-sd-webui-tagcomplete.git上面是GitCode的地址,下面是GitHub的地址,根据自身情…

个人微信CRM客户管理系统怎么选?功能介绍

现在市面上有许多种类的个人微信CRM客户管理系统可供选择,因此,我们需要选择最适合自己需求的微信管理系统CRM,最重要的是根据您的需求和期望的功能来进行筛选。 如何选择适合自己的微信CRM客户管理系统? 现在市面上的系统五花八…