FreeRTOS-系统时钟节拍和时间管理

一、前言

        任何操作系统都需要提供一个时钟节拍,以供系统处理诸如延时,超时等与时间相关的事件。时钟节拍是特定的周期性中断, 这个中断可以看做是系统心跳。 中断之间的时间间隔取决于不同的应用,一般是 1ms – 100ms。时钟的节拍中断使得内核可以将任务延迟若干个时钟节拍,以及当任务等待事件发生时,提供等待超时等依据。时钟节拍率越快,系统的额外开销就越大。
        对于 Cortex-M3 内核的 STM32F103 和 Cortex-M4 内核的 STM32F407 以及 F429,都是用滴答定时器来实现系统时钟节拍的。

宏定义配置表示系统时钟节拍是 1KHz,即 1ms
 

 二、FreeRTOS的时间管理

时间延迟函数主要由以下两个作用:

为周期性执行的任务提供延迟

 对于抢占式调度器,让高优先级任务可以通过时间延迟函数释放 CPU 使用权, 从而让低优先级任务可以得到执行

1、函数 vTaskDelay 用于任务的延迟

        void vTaskDelay(const TickType_t xTicksToDelay ); /* 延迟时间长度 */

参数 xTicksToDelay 用于设置延迟的时钟节拍个数,范围 1- 0xFFFFFFFF。

2、函数 vTaskDelayUntil 用于周期性延迟

void vTaskDelayUntil( TickType_t *pxPreviousWakeTime, /* 存储任务上次处于非阻塞状态时刻的变量地址 */const TickType_t xTimeIncrement ); /* 周期性延迟时间 */

函数 vTaskDelay 和 vTaskDelayUntil 的区别:

函数 vTaskDelayUntil 实现的是周期性延迟,而函数 vTaskDelay 实现的是相对性延迟;

例如:有一个串口接收指令任务UsartRev,函数处理时间大概2ms,任务内分别Task1使用vTaskDelay延迟10ms或者Task2使用vTaskDelayUntil延迟10ms,不考虑任务被抢占而造成的影响。实际运行效果:

Task1: Tusartrev  + Tvtaskdelay :  2ms +  10ms = 12ms 一个周期

Task2: Tusartrev  + TvtaskDelayuntil :  10ms 一个周期(2ms 包含在10ms内)

3、函数 xTaskGetTickCount用于获取系统当前运行的时钟节拍数

TickType_t xTaskGetTickCount( void );任务里面调用

4、函数 xTaskGetTickCountFromISR用于获取系统当前运行的时钟节拍数

TickType_t xTaskGetTickCountFromISR( void );

此函数用于在中断服务程序里面调用,如果在任务里面调用的话,需要使用函数 xTaskGetTickCount,这两个函数切不可混用

三、测试例程

https://gitee.com/hutaooooooo/git_keil/tree/master/freetos_vTaskDelay

1、使用 vTaskDelayUntil  测试

2、使用vTaskDelay 实现 vTaskDelayUntil 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++ —— 多态】

C —— 多态 多态的概念多态的定义和实现多态的构成条件虚函数虚函数的重写虚函数重写的两个例外协变:析构函数的重写 C11 override和final重载、覆盖(重写)、隐藏(重定义)的对比 抽象类概念接口继承和实现继承 多态的继承虚函数表多态的原理动态绑定和静态绑定 单继…

BERT一个蛋白质-季军-英特尔创新大师杯冷冻电镜蛋白质结构建模大赛-paipai

关联比赛: “创新大师杯”冷冻电镜蛋白质结构建模大赛 解决方案 团队介绍 paipai队、取自 PAIN AI,核心成员如我本人IvanaXu(IvanaXu GitHub),从事于金融科技业,面向银行信用贷款的风控、运营场景。但我们团队先后打过很多比赛&#xf…

算法系列--BFS解决拓扑排序

💕"请努力活下去"💕 作者:Lvzi 文章主要内容:算法系列–算法系列–BFS解决拓扑排序 大家好,今天为大家带来的是算法系列--BFS解决拓扑排序 前言:什么是拓扑排序 拓扑排序–解决有顺序的排序问题(要做事情的先后顺序) …

docker各目录含义

目录含义builder构建docker镜像的工具或过程buildkit用于构建和打包容器镜像,官方构建引擎,支持多阶段构建、缓存管理、并行化构建和多平台构建等功能containerd负责容器生命周期管理,能起、停、重启,确保容器运行。负责镜管理&am…

Java设计模式 _结构型模式_组合模式

一、组合模式 1、组合模式 组合模式(Composite Pattern)是这一种结构型设计模式。又叫部分整体模式。组合模式依据树形结构来组合对象,用来表示部分以及整体层次关系。即:创建了一个包含自己对象组的类,该类提供了修改…

Idea报错:无法访问org.springframework.boot.SpringApplication

在开发项目时,常常会遇到这种问题,报错信息如下图所示 版本号与jdk版本号存在对应关系,61.0对应jdk17,52.0对应jdk8 所以是某个依赖的版本太高,降低该依赖的版本即可 具体步骤: ①修改pom.xml中spring b…

ASP.NET实验室预约系统的设计

摘 要 实验室预约系统的设计主要是基于B/S模型,在Windows系统下,运用ASP.NET平台和SQLServer2000数据库实现实验室预约功能。该设计主要实现了实验室的预约和管理功能。预约功能包括老师对实验室信息、实验项目和实验预约情况的查询以及对实验室的预约…

ubuntu系统搭建pytorch环境详细步骤【笔记】

实践设备:华硕FX-PRO(NVIDIA GeForce GTX 960M) 搭建PyTorch环境的详细步骤如下: 1.安装Ubuntu系统: 下载Ubuntu的镜像文件并制作启动盘。将启动盘插入计算机,启动计算机并按照提示安装Ubuntu系统。 2.…

Linux内核之原子操作:atomic_long_dec用法实例(六十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

一起Talk Android吧(第五百五十八回:lombok用法)

文章目录 1. 概述2. 使用方法3. 内容总结 各位看官们大家好,上一回中介绍了如何获取文件读写权限的知识,本章回中将介绍lombok相关的知识。闲话休提,言归正转,让我们一起Talk Android吧! 1. 概述 这是一个java库,用来…

ES全文检索支持拼音和繁简检索

ES全文检索支持拼音和繁简检索 1. 实现目标2. 引入pinyin插件2.1 编译 elasticsearch-analysis-pinyin 插件2.2 安装拼音插件 3. 引入ik分词器插件3.1 已有作者编译后的包文件3.2 只有源代码的版本3.3 安装ik分词插件 4. 建立es索引5.测试检索6. 繁简转换 1. 实现目标 ES检索时…

flutter开发实战-build apk名称及指令abiFilters常用gradle设置

flutter开发实战-build apk名称及指令abiFilters常用gradle设置 最近通过打包flutter build apk lib/main.dart --release,发现apk命名规则需要在build.gradle设置。这里记录一下。 一、apk命名规则 在android/app/build.gradle中需要设置 android.applicationVa…

Pandas入门篇(二)-------Dataframe篇4(进阶)(Dataframe的进阶用法)(机器学习前置技术栈)

目录 概述一、复合索引(一)创建具有复合索引的 DataFrame1. 使用 set_index 方法:2.在创建 DataFrame 时直接指定索引: (二)使用复合索引进行数据选择和切片(三)重置索引&#xff08…

rabbitMq 0 到1

前言 工作中MQ的使用场景是数不胜数,每个公司的技术选型又不太一样,用的哪个MQ,我们必须要先玩起来,RabbitMQ在windows安装遇到很多问题,博客也是五花八门,算了还是自己搞吧,记录一下&#xff…

五大开放式耳机推荐,选对耳机让运动更带感!

看似精彩的户外运动经历背后,其实是枯燥的体能运动和训练,以及独自长途和长时间旅行伴随的孤独感,而排解这些不良情绪的最佳方式就是音乐。如果你希望在运动、舒适、安全和音质之间获得一个最佳平衡,那相比入耳式耳机,…

护航智慧交通安全 | 聚铭精彩亮相2024交通科技创新及信创产品推广交流会

4月26日,石家庄希尔顿酒店内,河北省智能交通协会盛大举办2024年度交通科技创新及信创产品推广交流会。聚铭网络受邀参与,携旗下安全产品及解决方案精彩亮相,为智慧交通安全保驾护航。 为深化高速公路创新驱动发展战略&#xff0…

pthread线程相关

LWP :轻量级 进程,本质仍是进程 进程 :独立地址空间,拥有PCB 线程:有独立的TCB,但没有独立的地址空间(共享) 区别 :在与是否共享地址文件 进程 (独居)&am…

10分钟了解数据质量管理-奥斯汀格里芬 Apache Griffin

在不重视数据质量的大数据发展时期,Griffin并不能引起重视,但是随着数据治理在很多企业的全面开展与落地,数据质量的问题开始引起重视。 1.Griffin简介 Griffin是一个开源的大数据数据质量解决方案,由eBay开源,它支持…

模型智能体开发之metagpt-单智能体实践

需求分析 根据诉求完成函数代码的编写,并实现测试case,输出代码 代码实现 定义写代码的action action是动作的逻辑抽象,通过将预设的prompt传入llm,来获取输出,并对输出进行格式化 具体的实现如下 定义prompt模版 …

IDEA 开发找到 java-web 发布到 tomcat 的路径

使用 IDEA 开发 java web 应用,有没有遇到需要找到 tomcat 路径的问题 为什么要找 tomcat 路径呢? 拿我的项目来举例,有统一的线上线下 logback.xml 配置,配置时业务、框架日志输出到 file,少量的启动日志输出到 con…