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

FreeRTOS-Tickless低功耗模式 | FreeRTOS十四

目录

说明:

一、低功耗模式简介

1.1、STM32低功耗模式

二、Tickless模式

2.1、Tickless模式如何功耗

2.2、Tickless模式设计思想

2.3、为了降低功耗,又不影响系统运行,怎么能做到呢?

三、Tickless模式修改配置

3.1、配置相关的宏定义

四、使用Tickless低功耗模式

4.1、使用步骤


说明:

关于内容:

        1)以下内容多为概念了解与步骤分析

        2)暂无个人示例代码,使用的是FreeRTOS的官方示例代码

        3)若想移植代码测试的,请移步其它地方寻找,下文内容暂无个人示例代码供测试

关于其它:

        1)操作系统:win 10

        2)平台:keil 5 mdk

        3)语言:c语言

        4)板子:STM32系列移植FreeRTOS

一、低功耗模式简介

        很多应用场合对于功耗的要求很严格,如可穿戴的手表、物理网低功耗产品等;一般的MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式。

        FreeRTOS也提供了一个叫Tickless的低功耗模式,方便带FreeRTOS操作系统的应用开发。

 1.1、STM32低功耗模式

如下图1:

       图1

        主要使用睡眠模式,进入睡眠模式WFI指令:_WFI,WFE指令:_WFE;退出休眠模式,任何中断或事件都可以唤醒睡眠模式;

 

二、Tickless模式

2.1、Tickless模式如何功耗

        本质是通过调用指令WIF实现睡眠模式。在执行空闲任务时,进入睡眠模式。

2.2、Tickless模式设计思想

        在任务运行时间统计实验中,可以看出整个系统在运行过程中,大部分时间是在运行空闲任务,如下图2:

图2

2.3、为了降低功耗,又不影响系统运行,怎么能做到呢?

        在空闲任务执行期间,让MCU进入相应的低功耗模式;当其他任务准备运行的时候,唤醒MCU退出低功耗模式。

难点:

        1)进入低功耗之后,多久唤醒?在下一个任务执行前,如何准确唤醒MCU?

        2)任何中断都可以唤醒MCU,滴答定时器频繁中断会影响低功耗的效果(1ms就中断一次)

解决:

        1)计算出任务阻塞时间;

        2)使用滴答定时器的中断周期改为低功耗运行的时间,在退出低功耗后,需要补上系统时钟节拍。

 令人开心的是:FreeRTOS低功耗模式Tickless模式机制已经处理好了这些难点,直接调用相关API函数使用即可。

三、Tickless模式修改配置

3.1、配置相关的宏定义

        1)configUSE_TICKLESS_IDLE-->该宏定义用于使能低功耗Tickless模式(1为使能,0不使能,其它值需要自己实现Tickless功能);

        2)configEXPECTED_IDLE_TIME_BEFORE_SLEEP-->该宏定义用于定义系统进入对应低功耗模式的最短时长(至少为2个系统节拍,也就是至少2ms);

        3)configPRE_SLEEP_PROCESSING(x)-->该宏定义用于系统在进入低功耗前执行的事务,如:进入低功耗前关闭外设时钟,以达到进一步降低低功耗目的;

        4)configPOSR_SLEEP_PROCESSING(x)-->该宏定义用于系统在退出低功耗前执行的事务,如:退出低功耗前开启外设时钟,以达到系统正常运行。

注意:configPRE_SLEEP_PROCESSING(x)与configPOSR_SLEEP_PROCESSING(x)需要直行实现函数内部操作-->给个宏定义到另一个函数,在另一个函数实现即可。

四、使用Tickless低功耗模式

4.1、使用步骤

        1)配置相关宏定义

        2)实现两个函数:configPRE_SLEEP_PROCESSING()、configPOSR_SLEEP_PROCESSING(),在这两个函数中实现进一步的低功耗(如关闭外部中断,关闭定时器等)

相关文章:

FreeRTOS-Tickless低功耗模式 | FreeRTOS十四

目录 说明: 一、低功耗模式简介 1.1、STM32低功耗模式 二、Tickless模式 2.1、Tickless模式如何功耗 2.2、Tickless模式设计思想 2.3、为了降低功耗,又不影响系统运行,怎么能做到呢? 三、Tickless模式修改配置 3.1、配置…...

实现了统一消息中心的微服务基础框架 JVS,快点赞收藏

一、开源项目简介基于JVS(基于spring cloud封装)的基础开源框架,实现了基于多对多租户能力的管理系统。二、基础框架实现功能支持数据管理支持分布式定时任务支持分布式日志采集支持系统监控支持动态配置中心支持模板消息支持链路跟踪支持邮件…...

VMware 安装 OpenWrt 旁路由并配置 PassWall

1、准备 OpenWrt 镜像包 我已经转好了 vmdk 格式的,更多的可以去恩山论坛下载 OpenWrtvmdk格式-虚拟化文档类资源-CSDN下载 也可以在这个平台在线定制 OpenWrt固件下载与在线定制编译 2、网络选择 NAT 模式 3、创建虚拟机,选择自定义方式 4、一直下…...

R语言GD包地理探测器分析时报错、得不到结果等情况的解决方案

本文介绍在利用R语言的GD包,实现自变量最优离散化方法选取与执行、地理探测器(Geodetector)操作时,出现各类报错信息、长时间得不到结果等情况的解决方案。 在之前的文章R语言GD包基于栅格图像实现地理探测器与连续参数的自动离散…...

嵌入式开发:你需要知道的5种简单

传达嵌入式软件体系结构设计意图通常伴随着基于嵌入式开发人员经验的假设。你可以从资源受限的基于微控制器的系统的角度来看架构设计。如何设计架构将取决于系统的嵌入式软件分类。有许多不同的方法可以对嵌入式软件进行分类。我发现有五种简单的嵌入式软件分类可以帮助我调整…...

MVC与MVVM

MVC与MVVM举例说明MVCMVVM两者比较MVC <!DOCTYPE html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>mvc案例</title><link rel"styleshe…...

Cortex-M0异常和中断

目录1.概念2.异常类型3.异常优先级定义4.向量表5.异常流程概述接受异常请求压栈和出栈异常返回指令末尾连锁延迟到达6.EXC_RETURN7.异常入口流程的细节压栈取出向量并更新PC寄存器更新8.异常退出流程的细节1.概念 异常是能够引起程序流偏离正常流程的事件&#xff0c;当异常发…...

数据库(6)--存储过程

一、学习目标 熟悉存储过程的定义和使用&#xff0c;熟练运用 select ,update ,insert ,delete 命令完成对学生信息数据库的查询、更新、添加、删除操作。 二、学习内容 学生&#xff08;学号&#xff0c;年龄&#xff0c;性别&#xff0c;系名&#xff09; 课程&#xff08;…...

c++ 指针、引用和常量

指针、引用和常量的关系_夜悊的博客-CSDN博客 1. ① 指针是对象&#xff0c;引用不是对象&#xff08;在此可以理解为变量&#xff0c;一个变量是一个对象&#xff09; 指针不必须初始化引用只是为一个已经存在的对象所起的另一个名字&#xff08;别名&#xff09;&#xff…...

1、HAL库UART 中断|DMA 自动回显接收数据

1、实现代码&#xff1a; stm32f4xx_hal_conf.h文件开启UART宏定义 #define HAL_UART_MODULE_ENABLED添加stm32f4xx_hal_uart.c和stm32f4xx_hal_dma.c到自己工程&#xff1b; 编写好的代码&#xff1a;usart_Driver.c /***************************************************…...

NPOI - ConditionalFormattingRule

NPOI 给xls(xlsx)创建条件格式 获取 XSSFSheetConditionalFormatting 对象 初始化 IWorkbook _workbook new XSSFWorkbook(); ISheet _dataSheet _workbook.GetSheet("template"); ISheetConditionalFormatting fcs _dataSheet.SheetConditionalFormatting;调用…...

JavaのString类这一篇就够了(包含StringBuffer_Builder)

1.&#x1f957;String类简介 在我们写代码的时候&#xff0c;String总是充斥着前前后后。 但你会不会经常力不从心&#xff0c; “这个*** 字符串怎么** 转换不成功啊” “*** 这个字符串到底是常量还是对象啊” “这*** 字符串内存结构到底* * * 是什么啊” “为啥我的字符串…...

C# dataGridView 导出表格 xls NPOI 2.4.1 版本

using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; try { SaveFileDialog fileDialog new SaveFileDialog(); fileDialog.Filter “Excel(97-2003)|*.xls”; if (fileDialog.ShowDialog() System.Windows.Forms.DialogResult.Cancel) { return; } //不允许dataGridView…...

秒杀项目的消息推送

目录 一、创建消费者 二、创建订单链路配置 1.定义RabbitMQ配置类 2.创建RabbitmqOrderConfig配置类 三、如何实现RabbitMQ重复投递机制 1.开启发送者消息确认模式 2.消息发送确认 ① 创建ConfirmCallBacker确认模式 ② 创建ReturnCallBack退回模式 3.创建生产者 …...

最近开发及 vue3 几个小总结

只是单纯记录一下最近维护了几个项目之后的感触&#xff0c;也只是在自己现在水平上面的一些感觉。发发牢骚&#xff0c;水水文章 是否过度封装 可能水平不够吧&#xff0c;在 axios 封装的时候&#xff0c;只是把响应和拦截还有一些全局的配置封装了一下&#xff0c;并没有加…...

代谢组学分享-花青素通过调节氨基酸代谢改善糖尿病肾病的肾功能

代谢组学文献分享&#xff0c;文章标题&#xff1a;Anthocyanin improves kidney function in diabetic kidney disease by regulating amino acid metabolism 发表期刊&#xff1a;Journal of Translational Medicine 影响因子&#xff1a;8.44 作者单位&#xff1a;中山大…...

超简单!pytorch入门教程:Tensor

超简单&#xff01;pytorch入门教程&#xff1a;Tensor 一、pytorch安装 安装pytorch之前&#xff0c;需要安装好python&#xff08;废话&#xff09;&#xff0c;还没安装过python的宝宝请先移步到廖雪峰的python教程&#xff0c;待安装熟悉完之后&#xff0c;再过来这边。 …...

如何使用COCO数据集,注意事项

COCO数据集可用来训练目标检测&#xff0c;分类&#xff0c;实例分割等。 下面简单说下如何使用这个数据集&#xff0c; 数据集下载可用如下的代码进行&#xff0c;以2017为例。 # Download the image data. cd ./images echo "Downloading MSCOCO train images ...&quo…...

金三银四跳槽季,JAVA面试撸题就来【笑小枫】微信小程序吧~

JAVA面试撸题就来【笑小枫】微信小程序啦~ 疫情已过&#xff0c;金三银四即将到来&#xff0c;小伙伴们是否有跳槽的打算呢&#xff1f;不管有没有&#xff0c;技术不能丢&#xff0c;让我们一起来撸题吧。 博主最近整理了一批面试题&#xff0c;包括JAVA基础、多线程与锁、Red…...

分享115个HTML电子商务模板,总有一款适合您

分享115个HTML电子商务模板&#xff0c;总有一款适合您 115个HTML电子商务模板下载链接&#xff1a;https://pan.baidu.com/s/158y3jP0tv7ZikxNOBMKsSg?pwdt970 提取码&#xff1a;t970 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 import os import shuti…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...