
FreeRTOS
文章平均质量分 84
RTOS 实时操作系统学习总结
maup
这个作者很懒,什么都没留下…
展开
-
8、FreeRTOS - 队列简单的使用介绍
队列是任务跟任务之间、任务跟中断之间进行数据交流的一种机制。队列图示如下:任务往队列写入数据,称为入队。从队列中读取数据,称为出队。入队和出队函数的内部都调用了临界段保护函数,禁止了任务的调度,保护了任务在读写时的数据,防止多个任务同时访问队列数据造成冲突。队列的存放数据的空间是有限的,空间大小可以在创建队列时指定。队列空间可以看成由多个存放数据的小盒子组成,这些小盒子称为“队列项目”,队列项目的大小单位为字节,小盒子的总数就是队列长度(如下图)。在创建队列时,就要指定队列项目的大小和队列长度。原创 2023-10-20 15:24:59 · 223 阅读 · 1 评论 -
1、FreeRTOS - 裸机和RTOS开发的区别
利用 RTOS 就可以创建两个不同的任务(RTOS 的任务就是程序员自定义的函数,如上面的 task1、task2,创建任务函数前需要先定义和声明一些参数,这里不做详细介绍),分别完成不同的事,通过开启任务调度器,任务间可以频繁的进行自动切换,就能实现吃一口饭,再吃一口菜,再吃一口饭...原本的裸机开发只能在 while 中按顺序执行,不同功能间的执行可能有较大的时间间隔,使用 RTOS 可以让多个不同功能的任务间通过调度的方式,快速的进行任务切换,切换速度非常快,肉眼看起来就像是同时执行一般,例如。原创 2023-10-05 12:06:34 · 788 阅读 · 0 评论 -
2、FreeRTOS - 任务、任务管理、任务状态
任务的运行状态的切换FreeRTOS 系统中的任务有多个状态,不同的状态之间的转换关系如下:原创 2023-10-06 15:48:42 · 262 阅读 · 1 评论 -
3、FreeRTOS - 任务的创建、删除
声明:学习笔记是看正点原子视频教学+个人理解总结的,仅供学习交流!!原创 2023-10-10 10:44:30 · 189 阅读 · 1 评论 -
4、FreeRTOS - 任务的调度、临界区
前面说过,想要实现多任务的调度,要满足 ①就绪列表中有任务,②开启了任务调度器。我们创建了新任务,任务就位于就绪列表中,之后开启任务调度器,就能开始任务的切换。函数功能启动任务调度器,启动后 FreeRTOS 开始对就绪列表中的任务进行调度挂起、恢复任务调度器的函数针对一些对时序有严格时间要求的外设,例如 I2C、SPI、DHT11,这类代码运行过程是不能被打断的(这类代码也成为临界区代码),否则模块极有可能无法正常工作,为防止可以先挂起任务调度器,等代码完整执行完后再恢复任务调度器。原创 2023-10-11 10:48:39 · 229 阅读 · 0 评论 -
5、FreeRTOS - 中断
在 STM32 中,用 NVIC 来专门管理所有中断(所有中断分配的任务就交给了NVIC,给不同的中断分配中断优先级的),是内核的一个外设,用来减轻 CPU 的负担。NVIC 总共有 16 个中断优先等级(0~15,由用户自己分配决定),为了处理不同形式的优先级, STM32 的 NVIC 对中断优先级进行了分组,分为了五组。:子优先级高的是不能打断正在执行的其他任务的,只能等待任务执行完才能轮到他,类似排队做核酸,子优先级高的是直接插入准备做核酸的下一位,而抢占优先级高的是直接把核酸做一半的人赶走。原创 2023-10-12 11:36:51 · 218 阅读 · 1 评论 -
6、FreeRTOS - 列表、列表项、任务控制块TCB
最近在网上学习FreeRTOS 列表后做的一些笔记,仅供学习交流!!FreeRTOS 中任务有多种状态:就绪态、运行态、阻塞态、挂起态。当存在多个任务都处于某个状态时,为了方便处理这些任务,会把这些任务组成一个列表。原创 2023-10-15 10:20:51 · 311 阅读 · 1 评论 -
7、FreeRTOS - 不同任务之间的沟通:互斥、同步、通信
同步:同步,是协调的意思,协调工作的进行,用于在多个任务的执行中控制轮到哪个任务执行和什么时候执行。例如,把任务比成班级里的同学,同学 A 和同学 B 一起完成一道数学大题,题被分成两小题,同学 A 做第一小题,同学 B 做第二小题,不过第二小题需要第一小题的计算结果才能继续往下算,所以同学 B 需要一直等待同学 A,只有等同学 A 做完后告诉同学 B 结果,同学 B 才能开始做题。(B 需要 A 的答案才能做题,所以等待的过程中什么都做不了,这个等待过程就被称为阻塞)互斥:用于保护共享资源,避免数据错误。原创 2023-10-16 18:48:49 · 546 阅读 · 1 评论