FreeRTOS实时操作系统(十五)Tickless低功耗模式

系列文章目录


文章目录

  • 系列文章目录
  • 低功耗模式
  • Tickless低功耗模式
    • 宏定义配置
  • 实验测试


低功耗模式

在之前的逻辑开发中学习过STM32的低功耗模式,在FreeRTOS中的低功耗模式,方便操作系统进入低功耗模式。

stm32中的低功耗模式:
在这里插入图片描述

Tickless低功耗模式

本质是调用指令WFI实现睡眠模式,在在整个系统的运行过程中,其实大部分时间是在执行空闲任务的,所以在空闲的时候进入低功耗,在其他任务准备运行的时候再退出低功耗模式。

运行方式:
进入低功耗后,获取到下一个任务的进入时间,就设置低功耗的退出时间,为了防止滴答定时器的中断唤醒MCU,频繁中断影响效果,将滴答定时器的中断周期修改为低功耗的运行时间,退出低功耗模式后,再补上节拍数

宏定义配置

configUSE_TICKLESS_IDLE
此宏用于使能低功耗 Tickless 模式

configEXPECTED_IDLE_TIME_BEFORE_SLEEP
此宏用于定义系统进入相应低功耗模式的最短时长(>1)

configPRE_SLEEP_PROCESSING(x)
此宏用于定义需要在系统进入低功耗模式前执行的事务,如:进入低功耗前关闭外设时钟,以达到降低功耗的目的

configPOSR_SLEEP_PROCESSING(x)
此宏用于定义需要在系统退出低功耗模式后执行的事务,如:退出低功耗后开启之前关闭的外设时钟,以使系统能够正常运行

实验测试

开启宏定义
在这里插入图片描述

默认事件设置:
在这里插入图片描述

在这里插入图片描述
需要对这两个函数重新定义:在文件中,如果对这两个宏没有定义的话会自己定义,所以我们需要提前定义,编译器就会自动识别为我们定义的函数。
在这里插入图片描述
在开头直接提前定义
在这里插入图片描述

在main文件中记得包含该文件;
在这里插入图片描述
设置进入休眠后我们的操作即可;还可以关闭其他的外设来降低功耗
在这里插入图片描述

代码:


#define configPRE_SLEEP_PROCESSING( x )   PRE_SLEEP_PROCESSING()
#define configPOST_SLEEP_PROCESSING( x )     POST_SLEEP_PROCESSING()/* 进入低功耗前所需要执行的操作 */
void PRE_SLEEP_PROCESSING(void)
{__HAL_RCC_GPIOA_CLK_DISABLE();__HAL_RCC_GPIOB_CLK_DISABLE();__HAL_RCC_GPIOC_CLK_DISABLE();__HAL_RCC_GPIOD_CLK_DISABLE();
}
/* 退出低功耗后所需要执行的操作 */
void POST_SLEEP_PROCESSING(void)
{__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();
}

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

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

相关文章

不外传秘诀| docker 快速搭建常用的服务环境

本文主要给大家介绍如何使用 docker 搭建常用的服务环境, 包括mysql,reedis,nginx,jenkins 等常用的环境,下面直接进入主题。 1、MySQL 部署 ①搜索 MySQL 镜像 docker search mysql ②拉取 MySQL 镜像 docker pull mysql:5.7 ③创建容器&#xf…

Flink是什么

先看下大数据的发展历程 随着公司业务的增加,各种场景都要大量的业务数据产生,对于这些不断产生的数据如何进行有效的处理? 由此诞生了大数据处理工具: 数据存在关系型数据库,比如mysql,如何分析数据&#…

疯踏java知识点-进阶精讲篇

该资源是关于Java的师生管理系统,可以学习借鉴一下。 继续进行讲解,如果前面有不懂的,可以翻阅一下同专栏的其他文章,该专栏是针对Java的知识从0开始。 JavaBean 一个Java中的类,其对象可用于程序中封装数据举例&…

设计模式——访问者模式

访问者模式 定义 封装一些的对于某种数据结构中的各元素的操作,它可以在不改变数据的前提下定义作用于这些元素的新的操作 访问者模式(Visitor pattern)是相对简单的模式,也可以作为迭代器模式的补充 优缺点、应用场景 优点 …

深入解析浏览器Cookie(图文码教学)

深入解析浏览器Cookie 前言一、什么是 Cookie?二、Cookie的特点二、如何创建 Cookie?三、服务器如何获取 Cookie四、Cookie 值的修改4.1 方案一4.2 方案二 五、浏览器查看 Cookie六、Cookie 生命控制七、Cookie 有效路径 Path 的设置八、案例:Cookie 练…

Linux学习之环境变量

环境变量是每个Shell打开就能获取到的变量&#xff0c;即一打开终端就已经初始化的变量。set、env和declare都可以查看变量的值。按照可以查看信息的范围从小到大是env<set<declare。 env只能显示全局变量。 set可以输出所有的变量&#xff0c;包括全局变量和局部变量。…

软考高级架构师笔记-9系统架构

目录 1. 前文回顾 & 考情分析2. 软件架构概述3. 软件架构风格3.1 层次架构风格3.2 面向服务架构风格4. 软件架构复用5. 特定领域软件体系结构DSSA6. ABSD7. 质量属性8. 架构评估9 结语1. 前文回顾 & 考情分析 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师…

IDEA项目报错随笔记录

文章目录 1. 无效的源发行版: 172. java: 无法访问org.springframework.boot.SpringApplication3. java: 程序包org.junit.jupiter.api不存在4. SpringbootTest注解爆红5. maven命令安装本地jar包报错&#xff1a;[拒绝访问]5. maven命令安装本地jar包报错&#xff1a;Unknown …

Kafka 概述、Filebeat+Kafka+ELK

Kafka 概述、FilebeatKafkaELK 一、为什么需要消息队列&#xff08;MQ&#xff09;1、使用消息队列的好处2、消息队列的两种模式 二、Kafka 定义1、Kafka 简介2、Kafka 的特性3、Kafka 系统架构 三、部署 kafka 集群1.下载安装包2.安装 Kafka3.Kafka 命令行操作 四、Kafka 架构…

吴恩达机器学习2022-Jupyter-机器学习实例

1 可选实验: 特征工程和多项式回归 1.1 目标 在这个实验室里: 探索特征工程和多项式回归&#xff0c;它可以让你使用线性回归机制来适应非常复杂&#xff0c;甚至非常非线性的函数。 1.2 工具 您将利用在以前的实验中开发的函数以及matplotlib和NumPy。 2 特征工程与多项式…

使用Gradio库进行交互式数据可视化:Timeseries模块介绍

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

【Hippo4j监控Web容器Tomcat线程池】

&#x1f680; 线程池管理工具-Hippo4j &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#…