22.1-任务的状态 第22章-FreeRTOS项目实战--任务的创建与执行 FreeRTOS 项目 FreeRTOS学习笔记 FreeRTOS移植 FreeRTOS开源项目 FreeRTOS面试题汇

news/2025/4/2 19:12:07/文章来源:https://www.cnblogs.com/haojiahuoVCC/p/18800155

这个是全网最详细的STM32项目教学视频。
第一篇在这里:
视频在这里:

https://www.bilibili.com/video/BV16x4y1M7EN/?share_source=copy_web&vd_source=f5d5850ab773377dff308188468fbc77

STM32智能小车V3-STM32入门教程-openmv与STM32循迹小车-stm32f103c8t6-电赛 嵌入式学习 PID控制算法 编码器电机 跟随)]
V3:HAL库开发、手把手教学下面功能:PID速度控制、PID循迹、PID跟随、遥控、避障、PID角度控制、openmv视觉控制、电磁循迹、FreeRTOS、K210视觉智能车(更新中)、K230视觉智能车(更新中)、MSPM0G3507视觉智能车(更新中)
在这里插入图片描述

讲解任务的常见几种 状态和如何切换的

单核CPU的多任务运行机制可以得到,任何时刻,只能有一个任务占用CPU并运行,这个任务的状态称为运行(running)状态,其他未占用CPU的任务状态称之为非运行(notruning)状态。非运行态又可以细分为三个状态,任务的各个状态及其状态之间的转化关系如何:
在这里插入图片描述
freeRTOS任务调度有抢占式和合作式两种方式,一般使用基于任务优先级的抢占式任务调度方法。任务调度的各种方法在后面有详细介绍,这里我们以抢占任务调度方法讲解。

  • 就绪状态

任务被创建后就处于就绪状态,freeRTOS的任务调度器在基础时钟每次中断是进行一次任务调度申请,根据抢占式任务调度的特点,任务调度的结果。

如果当前没有其他处于运行状态的任务,处于就绪状态的任务进入运行状态。

如果就绪任务的优先级高于或者等于当前任务的优先级,处于就绪状态的任务进入运行状态。

如果就绪任务的优先级低于当前任务的优先级,就绪状态的任务无法获得CPU使用权,继续处于就绪状态。

  • 运行状态

在单核处理器上,占有CPU并运行的任务就处于运行状态。处于运行状态的高优先级任务如果一直运行,将一直占用CPU,在任务调度时,低优先级的就绪任务就无法获得CPU的使用权,无法实现多任务的运行。因此,处于运行状态的任务,应该在空闲的时候让出CPU的使用权。

处于运行状态的任务,有两种主动让出CPU 使用权的方法,一种是执行函数 vTaskSuspend进入挂起状态,另一种是执行阻塞式函数进入阻塞状态。这两种状态都是非运行状态,运行的任务就交出了CPU的使用权,任务调度器可以使其他就绪状态的任务进入运行状态。

  • 阻塞状态

阻塞(blocked)状态就是任务暂时让出CPU的使用权,处于等待的状态。运行状态的任务可以调用两类函数进入阻塞状态。

一类是时间延迟函数,如vTaskDelay())或vTaskDelayUntil()。处于运行状态的任务调用这类函数后,就进入阻塞状态,并延迟指定的时间。延迟时间到了后,又进入就绪状态,参与任务调度后,又可以进入运行状态。

另一类是用于进程间通信的事件请求函数,例如,请求信号量的函数 xSemaphoreTake().处于运行状态的任务执行函数xSemaphoreTake()后,就进入阻塞状态,如果其他任务释放了信号量,或等待的超时时间到了,任务就从阻塞状态进入就绪状态状态

在运行状态的任务中调用函数vTaskSuspend(),可以将一个处于阻塞状态的任务转入挂起。

  • 挂起状态

挂起(suspended)状态的任务就是暂停的任务,不参与调度器的调度。其他 3 种状态的任务都可以通过函数vTaskSuspend()进入挂起状态。处于挂起状态的任务不能自动退出挂起状态,需要在其他任务里调用函数vTaskResume(),才能使一个挂起的任务变为就绪状态。

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

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

相关文章

ART树在订单簿管理中的应用

背景近期在工作中,我接触到了一种高效的数据结构——自适应基数树(Adaptive Radix Tree,ART)。ART 是一种基于基数树(Radix Tree)的数据结构,旨在提供高效的键值存储和查找功能。与传统的基数树不同,ART 通过自适应调整节点大小(如 Node4、Node16、Node48 和 Node256)…

AtCoder Beginner Contest 399 ABCDEF 题目解析

A - Hamming Distance 题意 给定两个长度均为 \(N\) 的字符串 \(S\) 和 \(T\),求总共有多少个位置不同。 思路 直接输入字符串后逐位判断即可。 代码 int n; string s, t; cin >> n >> s >> t; int ans = 0; for(int i = 0; i < n; i++)ans += (s[i] != …

Solana编译失败探讨(OpenEuler RISC-V版)

Solana 是 2017 年由 Anatoly Yakovenko 创立的开源项目,旨在打造高性能、去中心化且低成本的区块链平台2。它采用独特的 Proof of History(PoH)共识机制,结合 Tower BFT 等技术,实现了每秒数千笔交易的高吞吐量,确认时间仅 400 毫秒,每笔交易中位数费用为 0.00064 SOL1…

windows将ollama及模型安装到D盘或其他盘符

Ollama官网 在ollama安装包存放的文件路径输入 cmd 回车自动打开命令窗口 在命令行输入一下内容: 软件包名称 /DIR=指定目录OllamaSetup.exe /DIR=E:\software\Ollama 弹出安装程序,直接Install ---------------------------------------------------------------------…

【DIY】通达信DIY添加扫雷宝、地图和复盘(1)

【写在前面】炒股软件有很多,电脑版我用的多的通达信,手机版用的多的是同花顺。之前还有一些其它的软件,比如A股通、短线王、wind股票、雪球等都有自己的特色。自己不喜欢一次装好多软件,所以就产生了聚合的念头。通达信通赢版可以登录多券商账号,懒得来回切换,所以选择以…

RabbitMQ进阶--TTL,死信队列,持久化,磁盘监控

一.消息的TTL机制 RabbitMQ中的TTL(Time-To-Live,存活时间)是指消息或队列的过期时间。TTL机制允许你指定消息在未被消费前可以存活的时间长度,超过这个时间后,消息将被视为“死亡”,并从队列中移除。这种机制对于控制消息的有效性和资源管理非常有用。 防止积压消息:当…

day41 基础的模块

基础模块 ad-hoc命令模式pingcommandshellcopyfilescriptcrongroupuser1.先看资料,看模块的语法 - 官网,看实例用法,语法注解 - ansible-doc -s 模块名 - 你自己的学习笔记2.每一个模块独有的参数语法,都是 ad-hoc命令模式ansible 主机组 -m 模块名 -a "模块独有的…

Java面试基础

一、Java基础语法 1.1 环境搭建与开发 1、JDK、JRE、JVM的关系和区别?(高频plus)JDK:Java Development Kit,Java开发工具包,包含了JRE和一系列Java开发工具。 JRE:Java Runtime Environment,Java程序的运行环境,包含JVM、Java核心类库等。JRE只能用来运行Java应用程序…

day41 Ansible剧本的语法

day41--ansible剧本的学习 1.剧本的主题的内容剧本就是两大部分的知识点 -ansible 模块(以及模块的参数) -yaml语法3.工作以后 维护公司的剧本 -看剧本,看懂了,维护,修改 -修改各种的参数,文件的路径,文件的名字,服务的端口名字(就是该ansible各种的参数,参数的值)2。…

Windows系统迁移用户目录

Windows系统随着使用时间的延长,系统盘空间占用会越来越大,对于一些硬盘空间有限的主机而言,C盘空间剩余就越来越少,稍不注意可以可能就被占满了,导致系统都无法启动。正好我自己的笔记本电脑也遇到了同样的问题,因此就想把C:\Users目录迁移到其他分区中。 在实践中,使用…

iphone---苹果手机传输文件

使用手机,拍了一些照片和剪辑了一些视频,但是总感觉将手机里面的图片及视频传到电脑里面和麻烦,今天试了一下用U盘传,效率还可以,但是其中也遇到了一些问题,就在这里记录下: 传输方法:插入U盘,选择图片或文件,点击【分享】选择【存储到“文件”】点击【左上角浏览】…

Python+硅基流动API实现小说转有声读物

一、注册硅基流动账号获取文本转语音api 1.注册登录硅基流动注册、登录硅基流动查看apikey查看赠送的免费额度点击文档中心2.查看文本转语音api查看文本转语音api查看api使用指南查看文本转语音api的python调用方法二、python实现文本转语音功能 1.python调用api实现文本转语音…