【学习FreeRTOS】第5章——FreeRTOS任务挂起与恢复

1.任务的挂起与恢复的API函数

  • vTaskSuspend() ——挂起任务(类似暂停,可恢复,但删除任务,无法恢复)
  • vTaskResume() ——恢复被挂起的任务
  • xTaskResumeFromISR()—— 在中断中恢复被挂起的任务

1.1.任务挂起函数vTaskSuspend()

void vTaskSuspend(TaskHandle_t xTaskToSuspend) 
  • 形参:待挂起任务句柄
  • 此函数用于挂起任务,使用时需将宏 INCLUDE_vTaskSuspend 配置为 1。
  • 无论优先级如何,被挂起的任务都将不再被执行,直到任务被恢复 。
  • 当传入的参数为NULL,则代表挂起任务自身(当前正在运行的任务)

1.2.任务恢复函数vTaskResume()

void vTaskResume(TaskHandle_t xTaskToSuspend) 
  • 形参:待恢复任务句柄
  • 使用该函数注意宏:INCLUDE_vTaskSuspend必须定义为 1
  • 注意:任务无论被 vTaskSuspend() 挂起多少次,只需在任务中调用 vTakResume() 恢复一次,就可以继续运行。且被恢复的任务会进入就绪态!

1.3.任务恢复函数(中断)xTaskResumeFromISR()

BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume)  
  • 形参:待恢复任务句柄
  • 返回值:pdTRUE任务恢复后需要进行任务切换;pdFALSE任务恢复后不需要进行任务切换
  • 使用该函数注意宏:INCLUDE_vTaskSuspend 和 INCLUDE_xTaskResumeFromISR 必须定义为 1
  • 该函数专用于中断服务函数中,用于解挂被挂起任务
  • 中断服务程序中要调用freeRTOS的API函数则中断优先级不能高于FreeRTOS所管理最高优先级

2.任务挂起与恢复实验

  • 实验目的:学会 使用FreeRTOS中的任务挂起与恢复相关API函数:vTaskSuspend( )、
    vTaskResume( )、xTaskResumeFromISR( )
  • 实验设计:将设计四个任务:start_task、task1、task2、task3
    start_task:用来创建其他的三个任务
    task1:实现LED0每500ms闪烁一次
    task2:实现LED1每500ms闪烁一次
    task3:判断按键按下逻辑,KEY0按下,挂起task1,按下KEY1在任务中恢复task1
    EXTI:按下KEY2,在中断中恢复task1(外部中断线实现)

在这里插入图片描述

3.任务挂起和恢复API函数解析

3.1.任务挂起函数vTaskSuspend()函数解析

在这里插入图片描述

3.2.任务恢复函数vTaskResume() 函数解析

在这里插入图片描述

3.3.任务恢复函数(中断)xTaskResumeFromISR()函数解析

在这里插入图片描述

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

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

相关文章

Grafana+Prometheus技术文档-进阶使用-监控spring-boot项目

阿丹: 之前已经实现了使用Prometheus来对服务器进行了监控和仪表盘的创建,现在就需要对这些监控方法使用在spring-boot中去。 实现思路: 1、集成Actuator 2、加入Prometheus的依赖 3、配置开放端口、以及开放监控 4、配置Prometheus中的配置…

天马上位在即,将成为iPhoneSE4二级供应商,SE4有望2025年量产

根据知情人士透露,国内OLED面板制造商,如天马,正在积极争取成为苹果iPhone SE 4的AMOLED面板供应商。 苹果面板采购负责人已经在今年上半年访问了中国大陆的主要柔性AMOLED面板制造商之一,这意味着国内一家OLED面板厂商有望成为iP…

【PCL】激光雷达常用传统感知算法学习

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍常用激光感知算法学习。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下…

【已解决】Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据

🎉工作中遇到这样一个需求场景:由于ES数据库中历史数据过多,占用太多的磁盘空间,需要定期地进行清理,在一定程度上可以释放磁盘空间,减轻磁盘空间压力。 🎈在经过调研之后发现,某服务…

9.2.2Socket(TCP)

一.过程: 1.建立连接(不是握手),虽然内核中的连接有很多,但是在应用程序中,要一个一个处理. 2. 获取任务:使用ServerSocket.accept()方法,作用是把内核中的连接获取到应用程序中,这个过程类似于生产者消费者模型. 3. 使用缓冲的时候,注意全缓冲和行缓冲. 4.注意关闭文件资源…

从零实战SLAM-第二课(SLAM中的基础数学)

空间数据的表达方式:点和向量两种形式。 向量的内积,也叫做点乘,是逐点相乘后累加,最终结果是一个标量,物理意义是一个向量在另一个向量上的投影。 外积,也叫做叉乘,两个向量拼起来成&#xff0…

maven是什么?安装+配置

目录 1.什么是maven? 1.2.maven的核心功能是什么? 2.Maven安装配置 2.1Maven的安装 2.2Maven环境配置 1.配置 MAVEN_HOME ,变量值就是你的 maven 安装的路径(bin 目录之前一级目录) 2.将MAVEN_HOME 添加到Path系…

汽车上的电源模式详解

① 一般根据钥匙孔开关的位置来确定整车用电类别,汽车上电源可以分为常电,IG电,ACC电 1)常电。常电表示蓄电池和发电机输出直接供电,即使点火开关在OFF档时,也有电量供应。一般来讲模块的记忆电源及需要在车…

关于安卓打包生成aar,jar实现(一)

关于安卓打包生成aar,jar方式 背景 在开发的过程中,主项目引入三方功能的方式有很多,主要是以下几个方面: (1)直接引入源代码module(优点:方便修改源码,易于维护&#…

ArcGIS Pro技术应用(暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合)

GIS是利用电子计算机及其外部设备,采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲,它是在一定的地域内,将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来,达到对地理和属性信息的综合管理。GIS的…

golang trace view 视图详解

大家好,我是蓝胖子,在golang中可以使用go pprof的工具对golang程序进行性能分析,其中通过go trace 命令生成的trace view视图对于我们分析系统延迟十分有帮助,鉴于当前对trace view视图的介绍还是很少,在粗略的看过tra…

MySQL存储结构及索引

文章目录 MySQL结构1.2存储引擎介绍1.3存储引擎特点InnoDB逻辑存储结构 MyISAMMemory区别及特点存储引擎选择 索引索引概述索引结构BTreeHash索引分类聚集索引&二级索引索引语法SQL性能分析索引优化最左前缀法则范围查询字符串不加引号模糊查询or连接条件数据分布影响覆盖索…

Linux:Shell编程之正则表达式

目录 绪论 1、正则表达式 1.1 通配符 1.2 正则表达式分类 1.3 基本正则 1.4 正则表达式中表示次数的表达式 1.5 位置锚定 1.5.1 词首锚定和词尾锚定 1.6 分组() 1.7 逻辑或 1.8 扩展正则 绪论 正则表达式:有一类特殊字符以及文本…

.NET对象的内存布局

在.NET中,理解对象的内存布局是非常重要的,这将帮助我们更好地理解.NET的运行机制和优化代码,本文将介绍.NET中的对象内存布局。 .NET中的数据类型主要分为两类,值类型和引用类型。值类型包括了基本类型(如int、bool、double、cha…

SQL server 与 MySQL count函数、以及sum、avg 是否包含 为null的值

sql server 与 mysql count 作用一样。 count 计算指定字段出现的个数, 不是计算 null的值 获取表的条数 count(n) n:常数 count(1),count(0)等 count(*) count(字段) 其中字段为null 不会统计在内。 avg(字段)、sum(字段) 跟count(字段)…

VS Code 使用cnpm下载包失败

一、 问题如下: 网上找到的解决方法是要在powershell中执行: Set-ExecutionPolicy RemoteSigned进行更改策略。 首先我们解释下这个Set-ExecutionPolicy RemoteSigned,Set-ExecutionPolicy 是一个 PowerShell 命令,用于控制脚本…

火车头采集伪原创插件【php源码】

大家好,小编来为大家解答以下问题,python代码大全和用法,python代码大全简单,现在让我们一起来看看吧! 火车头采集ai伪原创插件截图: 1、题目:列表转换为字典。 程序源代码: 1 #!/us…

Dynamo_关于参数赋值

写写关于Dynamo参数赋值 为单个对象赋单个参数值 最容易理解,SetParameterByName需要输入三个参数,元素对象(数据类型:Element),参数名称(数据类型:String),…

【JAVA基础】- 同步非阻塞模式NIO详解

【JAVA基础】- 同步非阻塞模式NIO详解 文章目录 【JAVA基础】- 同步非阻塞模式NIO详解一、概述二、常用概念三、NIO的实现原理四、NIO代码实现客户端实现服务端实现 五、同步非阻塞NIO总结 一、概述 NIO(Non-Blocking IO)是同步非阻塞方式来处理IO数据。…

【ChatGPT 指令大全】怎么使用ChatGPT辅助程式开发

目录 写程式 解读程式码 重构程式码 解 bug 写测试 写 Regex 总结 在当今快节奏的数字化世界中,程式开发变得越来越重要和普遍。无论是开发应用程序、网站还是其他软件,程式开发的需求都在不断增长。然而,有时候我们可能会遇到各种问题…