
freertos
给自己学习freertos做一个记录
猫的大兔子
惟愿踏踏实实下去,成为一个令人尊敬的大师
展开
-
FreeRTOS --(0)简介
FreeRTOS 是一个嵌入式实时操作系统,具有相对(相对 Linux、Windows等)较小的体积,使用精简的代码实现了简单的进程调度,内存管理,消息发送,等,常常用在一些需要支持多任务的 MCU 上;在没有 RTOS 的嵌入式小系统中,代码都跑在 while 1 中,我们称之为 “裸机”,也没有任务的概念;而 RTOS 的出现,使得可以支持多任务执行(宏观并行,微观串行),任务与任务,中断与任务,之间可以通过消息传递数据; RTOS(Real Time Operation System)实时操作系统转载 2022-02-28 22:18:55 · 204 阅读 · 0 评论 -
FreeRTOS --(11)资源管理之临界区
目录 1、taskENTER_CRITICAL 2、vTaskSuspendAll 3、Mutexes 3.1、Usage 临界区的概念在任何的 SoC 都存在,比如,针对一个寄存器,基本操作为:读->改->写;在不带 OS 的系统下,普通代码希望对某个寄存器进行读->改->写,此刻,一个 IRQ 打断了这个操作,也同时对这个寄存器进行 读->改-...转载 2022-03-09 22:26:36 · 1733 阅读 · 1 评论 -
FreeRTOS --(9)信号量之概述
目录 1、Binary Semaphores 1.1、Usage 1.2、APIs 1.2.1、xSemaphoreCreateBinary 1.2.2、xSemaphoreTake / xSemaphoreTakeFromISR 1.2.3、xSemaphoreGive / xSemaphoreGiveFromISR 2、Counting Semaphores 2.1、Usag...转载 2022-03-09 22:11:16 · 5723 阅读 · 1 评论 -
FreeRTOS --(9)队列管理之概述
目录 1、Basic Feature 1.1、Access by Multiple Tasks 1.2、Blocking on Queue Reads 1.3、Blocking on Queue Writes 2、Usage And APIs 2.1、xQueueCreate() 2.2、xQueueSendToBack()/xQueueSend And xQueueSendToFront(...转载 2022-03-09 22:00:53 · 781 阅读 · 0 评论 -
FreeRTOS --(8)任务管理之空闲任务
创建完毕任务,启动调度器,任务控制,系统 SysTick 来临后判断是否需上下文切换; 如果没有其他任务执行的情况下,FreeRTOS 的 Idle 任务将被调度投入运行; 在启动调度器的时候,Idle 任务就被创建了,优先级为最低 0; void vTaskStartScheduler( void ){.....................xReturn = xTaskCreate( prvIdleT...转载 2022-03-06 17:17:58 · 1355 阅读 · 0 评论 -
FreeRTOS --(7)任务管理之任务切换
现在创建任务(xTaskCreate)、启动调度器(vTaskStartScheduler),任务控制(xTaskDelay),以及Tick 中断(xPortSysTickHandler),都分析完成了,SysTick,PendSV 中断已经使能,接下来第一个任务便可以自由的奔跑;等待下一次 SysTick 来临(1ms 后),调度器工作; 1、xPortSysTickHandler SysTi...转载 2022-03-06 17:00:34 · 1430 阅读 · 1 评论 -
FreeRTOS --(6)任务管理之系统节拍
前面有了创建任务、启动调度器、任务控制,接下来便开始分析一个 Tick 到来之后,FreeRTOS 即将有什么行为; 在启动调度器的时候,就已经配置好了 SysTick,它作为 OS 的心跳,每隔一个固定周期来一次 SysTick 中断,来驱动 OS 做事(任务调度); 以 STM32 为例,定义的 configTICK_RATE_HZ 为 1000,由《FreeRTOS --(9)任务管理之启动...转载 2022-03-06 00:32:08 · 599 阅读 · 0 评论 -
FreeRTOS --(5)任务管理之任务延时
目录 1、接口介绍 1.1、vTaskDelay 1.1.1、Usage 1.1.2、Implement 1.2、vTaskDelayUntil 1.2.1、Usage 1.2.2、Implement 在《FreeRTOS --(7)任务管理之入门篇》中讲过,如果有几个任务同时跑,但是又都不阻塞的话,那么最高优先级的任务将会占领整个 CPU,因为每次都会调度到它,一直处于 Read...转载 2022-03-06 00:03:38 · 2636 阅读 · 0 评论 -
FreeRTOS --(4)任务管理之启动调度器
目录 1、vTaskStartScheduler 2、xPortStartScheduler 3、vPortSetupTimerInterrupt 4、prvStartFirstTask 5、vPortSVCHandler 在使用 FreeRTOS 的时候,一般的,先创建若干任务,但此刻任务并没有被调度起来,仅仅是创建了,如果想要真正的跑起来,那么还需要调用让调度器跑起来的函数: ...转载 2022-03-03 22:23:11 · 988 阅读 · 0 评论 -
FreeRTOS --(3)任务管理之创建任务
目录 1、描述任务的结构 2、任务创建 2.1、xTaskCreate 2.2、prvInitialiseNewTask 2.3、pxPortInitialiseStack 2.4、prvAddNewTaskToReadyList 在《FreeRTOS --(7)任务管理之入门篇》文章基本分析了任务相关的轮廓后,我们知道使用什么接口来创建一个任务、怎么去开启调度器、以及根据宏配置,选择调度器的行为;...转载 2022-03-02 22:23:41 · 1613 阅读 · 1 评论 -
FreeRTOS --(2)任务管理之入门篇
目录 1、任务状态 2、任务创建 3、任务优先级 4、任务阻塞 5、任务挂起 6、空闲任务 5、任务调度 5.1、抢占式调度 5.2、协作式调度 任务管理是操作系统中重中之重,不管什么 OS ,任务的调度管理都是核心,FreeRTOS 也是一样;在深入到 FreeRTOS 任务管理的源码之前,鄙人觉得有必要先去从全局的角度进行把握,从全局到局部,从粗线条,到细节,鄙人觉得这样方...转载 2022-03-01 21:53:15 · 1567 阅读 · 0 评论 -
FreeRTOS --(1)链表
Based On FreeRTOS Kernel V10.3.1 1、相关文件 链表结构是 OS 内部经常使用到的,FreeRTOS 自然也不例外,在深入分析各个模块的工作原理之前,首先来分析 FreeRTOS 的链表结构,和链表相关的代码被定义在: list.h list.c 2、数据结构 不得不说,FreeRTOS 另一个成功的因素,在于他的代码注释,非常的完备...转载 2022-02-28 22:14:36 · 849 阅读 · 0 评论