FreeRTOS挂起和恢复任务相关函数解析

目录函数vTaskSuspend()函数vTaskSwitchContext()函数vTaskResume()函数xTaskResumeFromISR()以下FreeRTOS源码函数使用的版本是9.0.0,不同版本的源码会有部分不同如10.4.6,注...

FreeRTOS中任务创建函数xTaskCreate()的解析

目录函数xTaskCreate()函数prvInitialiseNewTask()函数pxPortInitialiseStack()函数prvAddNewTaskToReadyList()总结函数xTaskCreate()此函数用于使用动态的方式...

[嵌入式系统-14]:常见实时嵌入式操作系统比较:RT-Thread(物联网版本的类Linux)、uC/OS-II和FreeRTOS、Linux

实时嵌入式操作系统(Real-TimeEmbeddedOperatingSystem)是专门设计用于嵌入式系统的实时操作系统。嵌入式系统是一种特殊的计算机系统,通常是用于控制、监测或执行特定任务的系统。实时嵌入...

FreeRTOS 简单内核实现8 时间片轮询

0、思考与回答0.1、思考一为什么要增加时间片轮询?目前的RTOS内核已经支持抢占优先级,即高优先级的任务会抢占低优先级的任务得到执行,但是对于同等优先级的任务,如果不支持时间片轮询,则只能有一个任务运行,并且由于优先级相同所以除延时阻塞到期外也不会...

FreeRTOS简单内核实现7 阻塞链表

0、思考与回答0.1、思考一如何处理进入阻塞状态的任务?为了让RTOS支持多优先级,我们创建了多个就绪链表(数组形式),用每一个就绪链表表示一个优先级,对于阻塞状态的任务显然要从就绪链表中移除,但是阻塞状态的任务并不是永久阻塞了,等待一段时间后应该从...

FreeRTOS简单内核实现6 优先级

0、思考与回答0.1、思考一如何实现RTOS内核支持多优先级?因为不支持优先级,所以所有的任务都插入了一个名为pxReadyTasksLists的就绪链表中,相当于所有任务的优先级都是一致的,那如果我们创建一个就绪链表数组,数组下标代表优先级,优...

FreeRTOS简单内核实现4 临界段

@目录0、思考与回答0.1、思考一0.2、思考二0.3、思考三1、关中断1.1、带返回值1.2、不带返回值2、开中断3、临界段4、应用0、思考与回答0.1、思考一为什么需要临界段?有时候我们需要部分代码一旦这开始执行,则不允许任何中断打断,这段代码称为...

FreeRTOS简单内核实现3 任务管理

0、思考与回答0.1、思考一对于Cortex-M4内核的MCU在发生异常/中断时,哪些寄存器会自动入栈,哪些需要手动入栈?会自动入栈的寄存器如下R0-R3:通用寄存器R12:通用寄存器LR(LinkRegister):链接寄存器,保...

FreeRTOS简单内核实现2 双向链表

FreeRTOS的list.c/list.h文件中有3个数据结构、2个初始化函数、2个插入函数、1个移除函数和一些宏函数,链表是FreeRTOS中的重要数据结构...

FreeRTOS 简单内核实现1 前言

为深入理解RTOS内核工作机制,笔者制作了名为“FreeRTOS内核简单实现”的项目专栏,目标为自己动手从0到1编程一个简单的RTOS内核,从而实现任务并行工作的效果...