嵌入式学习-FreeRTOS-Day3

嵌入式学习-FreeRTOS-Day3

一、思维导图

在这里插入图片描述

二、

1.FreeRTOS任务的调度算法及实现

默认是抢占式调度+时间片轮询

1.抢占式调度:任务优先级高的可以打断任务优先级低的执行(适用于不同优先级)
2.时间片轮转:每一个任务拥有相同的时间片(1ms),保证任务执行的公平性,当一个任务的时间片耗尽时任务就必须退出(适用于相同优先级)
3.协作式调度:任务自行决定何时释放处理器控制权。通常是通过调用延迟函数或主动让出控制权的函数来实现。协作式调度不会被中断打断,而是等待任务自愿地让出 CPU 控制权。

验证抢占式调度、时间片轮询
/* Definitions for defaultTask */
osThreadId_t defaultTaskHandle;
const osThreadAttr_t defaultTask_attributes = {.name = "defaultTask",.stack_size = 128 * 4,.priority = (osPriority_t) osPriorityNormal,
};
/* Definitions for myTask02 */
osThreadId_t myTask02Handle;
uint32_t myTask02Buffer[ 64  ];
osStaticThreadDef_t myTask02ControlBlock;
const osThreadAttr_t myTask02_attributes = {.name = "myTask02",.cb_mem = &myTask02ControlBlock,.cb_size = sizeof(myTask02ControlBlock),.stack_mem = &myTask02Buffer[0],.stack_size = sizeof(myTask02Buffer),.priority = (osPriority_t) osPriorityNormal1,
};
/* Definitions for myTask03 */
osThreadId_t myTask03ControlBlock;
const osThreadAttr_t myTask03_attributes = {.name = "myTask03",.stack_size = 128 * 4,.priority = (osPriority_t) osPriorityNormal,
};/* Private function prototypes -----------------------------------------------*/
void StartDefaultTask(void *argument);
void StartTask02(void *argument);
void StartTask03(void *argument);/* Create the thread(s) *//* creation of defaultTask */defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes);/* creation of myTask02 */myTask02Handle = osThreadNew(StartTask02, NULL, &myTask02_attributes);/* creation of myTask03 */myTask03Handle = osThreadNew(StartTask03, NULL, &myTask03_attributes);	/* USER CODE BEGIN RTOS_THREADS *//* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask *//* Infinite loop *///int num = 0;int i = 0;for(;;){printf("defaulttask start\r\n");for (i = 0; i<10000000; i++){;}printf("defaulttask end\r\n");}/* USER CODE END StartDefaultTask */
}/* USER CODE END Header_StartTask02 */
void StartTask02(void *argument)
{/* USER CODE BEGIN StartTask02 *//* Infinite loop *///int i=1;for(;;){printf("task02 running\r\n");}/* USER CODE END StartTask02 */
}/* Private application code --------------------------------------------------*/
/* USER CODE BEGIN Application */
void StartTask03(void *argument)
{for(;;){printf("task03 running\r\n");}
}
/* USER CODE END Application */

运行结果

2.任务的状态以及是怎么样进行转换的

创建态、就绪态、执行态、阻塞态、终止态

在这里插入图片描述

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

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

相关文章

一张草图直接生成视频游戏,谷歌推出生成交互大模型

谷歌DeepMind的研究人员推出了&#xff0c;首个无需数据标记、无监督训练的生成交互模型——Generative Interactive Environments&#xff0c;简称“Genie”。 Genie有110亿参数&#xff0c;可以根据图像、真实照片甚至草图&#xff0c;就能生成各种可控制动作的视频游戏。Ge…

uniapp实现---类似购物车全选

目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 四、小结 注意事项 一、实现思路 点击商家复选框&#xff0c;可选中当前商家下的所有商品。点击全选&#xff0c;选中全部商家的商品 添加单个多选框&#xff0c;在将多选…

活动会议如何做好线上宣传?媒体直播怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 活动会议的线上宣传和媒体直播是提高活动曝光度和参与度的重要手段。以下是一些建议&#xff0c;以帮助您做好线上宣传和媒体直播&#xff1a; 一、线上宣传策略 制定宣传计划&#xff…

FreeRTOS学习笔记-基于stm32(3)中断管理

一、什么是中断 通俗点讲就是让CPU停止当前在做的事&#xff0c;转而去做更紧急的事。 二、中断优先级分组 这个紧急的事也有一个等级之分&#xff0c;优先级越高越先执行。stm32使用中断优先配置寄存器的高4位&#xff0c;共16级的中断优先等级。 stm32的中断优先等级可以分为…

VTune+Sampling Drivers环境搭建(本地和远程)

文章目录 一、实验环境二、Vtune安装2.1 下载2.2 安装2.3 测试2.4 检查2.5 部分功能开启2.5.1 ptrace2.5.2 Sampling Drivers 2.6 Memory Access功能 三、安装Sampling Drivers3.1 Sampling Drivers下载3.2 Sampling Drivers编译3.3 Sampling Drivers安装3.4 Sampling Drivers开…

03_JDBC

文章目录 数据库的访问流程JDBCJDBC实现流程使用JDBC进行增删改查增删改查 重要的APIDriverManagerConnectionStatementResultSet JDBC实现流程的优化数据库注入问题批处理for循环逐条插入statement批处理preparedStatement批处理 数据库的事务事务的步骤事务的API事务的特性事…

计算机组成原理之机器:存储器之高速缓冲存储器

计算机组成原理之机器&#xff1a;存储器之高速缓冲存储器 笔记来源&#xff1a;哈尔滨工业大学计算机组成原理&#xff08;哈工大刘宏伟&#xff09; Chapter3&#xff1a;存储器之高速缓冲存储器 3.1 概述 3.1.1 为什么用cache&#xff1f; 角度一&#xff1a;I/O设备向…

Layer1 隐私安全项目 Partisia Blockchain 空投计划邀你瓜分 2500W 枚 MPC 奖励!

&#x1f6f0;️ Partisia 及基金会介绍 作为一个以 Web3 安全为技术方向的 Layer1 区块链&#xff0c;Partisia Blockchain 自 2021 年诞生之日起已完成了 3 项主要的技术创新。为了创建更安全、快速的数字基础设施&#xff0c;Partisia Blockchain 实现了 1 秒以内的快速交易…

macos docker baota 宝塔 搭建 ,新增端口映射

拉取镜像仅拉取镜像保存到本地&#xff0c;不部署容器&#xff0c;仅需拉取一次&#xff0c;永久存储到本地镜像列表 docker pull akaishuichi/baota-m1:lnmp 其他可参考&#xff1a;宝塔面板7.9.2docker镜像发布-集成LN/AMP支持m1/m2 mac版本 - Linux面板 - 宝塔面板论坛 运行…

CDN(内容分发网络):加速网站加载与优化用户体验

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Linux服务器安装jdk

背景: 安装JDK是我们java程序在服务器运行的必要条件,下面描述几个简单的命令就可再服务器上成功安装jdk 命令总览: yum update -y yum list | grep jdk yum -y install java-1.8.0-openjdk java -version 1.查看可安装版本 yum list | grep jdk 2.如果查不到可先进行 yum upd…

VBA中类的解读及应用第十讲:限制文本框的输入,使其只能输入数值(上)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。 类&#xff0c;是非常抽象的&#xff0c;更具研究的价值。随着我们学习、应用VBA的深入&#xff0…