FreeRTOS
文章平均质量分 81
FreeRTOS初学
Swiler
就凭一把伞,躲过一阵潇潇的冷雨,也躲不过整个雨季
展开
-
对FreeRTOS的task.c文件源码的分析笔记(一)
task.c文件TCB结构体分析typedef struct tskTaskControlBlock{ volatile StackType_t *pxTopOfStack; #if ( portUSING_MPU_WRAPPERS == 1 ) xMPU_SETTINGS xMPUSettings; #endif ListItem_t xStateListItem; //状态列表项 ListItem_t xEventListItem; //事件列原创 2022-04-29 12:26:28 · 689 阅读 · 0 评论 -
对FreeRTOS的task.h文件源码的分析笔记
慢慢从源码来理解FreeRTOS的工作原理版本信息//大版本.小版本.构建版本#define tskKERNEL_VERSION_NUMBER "V10.0.1"#define tskKERNEL_VERSION_MAJOR 10#define tskKERNEL_VERSION_MINOR 0#define tskKERNEL_VERSION_BUILD 1两个引用的函数原型/* 任务引用的类型,是一个void*型的指针,作为任务句柄 *//* void*型指针是一个特殊的指针,任何指原创 2022-04-16 15:45:22 · 845 阅读 · 1 评论 -
对FreeRTOS的List.c和.h文件源码的分析笔记
List.h文件列表项结构体(节点)struct xLIST_ITEM{ listFIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE /*< 检查列表项完整性 */ configLIST_VOLATILE TickType_t xItemValue; /*< 列表项的值 */ struct xLIST_ITEM * configLIST_VOLATILE pxNext; /*< 指向下一个列表项 */ struct xLIST_ITEM *原创 2022-04-16 01:35:18 · 3064 阅读 · 0 评论 -
FreeRTOS(四)任务管理
任务的基本概念 FreeRTOS 的任务可认为是一系列独立任务的集合。每个任务在自己的环境中运行。在任何时刻,只有一个任务得到运行,FreeRTOS 调度器决定运行哪个任务。调度器会不断的启动、停止每一个任务,宏观看上去所有的任务都在同时在执行。 调度器做的事情就是,再任务切入切出的时候保存上下文环境信息(寄存器值、堆栈内容等),所以每一个任务都需要有自己的栈空间。当任务切出时,它的执行环境会被保存在该任务的栈空间中,这样当任务再次运行时,就能从堆栈中正确的恢复上次的运行环境,任务越多,需要的堆原创 2022-02-27 00:30:04 · 847 阅读 · 0 评论 -
FreeRTOS(三)启动流程
启动流程FreeRTOS的主要两种启动流程在 main 函数中将硬件初始化,RTOS 系统初始化,所有任务的创建这些都弄好。最后启动 RTOS 的调度器,开始多任务的调度。(先创建,再调度)int main (void){ /* 硬件初始化 */ HardWare_Init(); /* RTOS 系统初始化 */ RTOS_Init(); /* 创建任务 1,但任务 1 不会执行,因为调度器还没有开启 */ RTOS_TaskCreate(原创 2022-02-27 00:26:51 · 1467 阅读 · 0 评论 -
FreeRTOS(二)创建任务
任务一. 任务的基本概念FreeRTOS的任务可以认为是一系列独立的任务的集合。每个任务在自己的环境中运行,并且每个时刻只有一个任务在运行,但从宏观上看,所有的任务都在同时执行;不同任务的切换与任务本身无关,这是由调度器来实现的。调度器负责在任务切入、切出时保存上下文环境(寄存器值、栈内容);所以每个任务都有自己独立的栈空间,任务切出时,其执行环境会被保存在该任务的栈空间中,当任务再次运行时,就能从栈中恢复上次的运行环境。任务越多,需要的栈空间就越大,一个系统能运行多少个任务,取决于原创 2022-02-23 17:20:36 · 1668 阅读 · 0 评论 -
FreeRTOS(一)移植FreeRTOS到STM32
FreeRTOS 的编程风格数据类型 FreeRTOS中的数据类型重定义。在 FreeRTOS 中,使用的数据类型虽然都是标准 C 里面的数据类型,但是针对不同的处理器,对标准 C 的数据类型在文件portmacro.h这个头文件中进行重定义#define portCHAR char#define portFLOAT float#define portDOUBLE double#define portLONG long#define portSHORT short#define原创 2022-02-23 17:17:45 · 661 阅读 · 0 评论