随笔分类 - FreeRTOS
摘要:FreeRTOS延时简易分析 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:在很多情况,需要使用延时来达到一些效果,那么FreeRTOS的延时是怎么实现的 1.相对延时vTaskDelay 只有一个参数就是等待时间 void vTaskDelay( const TickTyp
阅读全文
摘要:FreeRTOS任务通知 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:任务通知的出现,是为了代替有些场景队列和信号量的使用,为什么要替换?为什么可以替换?接下来是分析任务通知有什么优势。 1.任务通知的创建 任务通知并没有专门的函数创建,而是在每个任务创建的时候,任务通知就
阅读全文
摘要:FreeRTOS Heap简易分析 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:队列、任务、信号量等都是需要内存来保存的,FreeRTOS提供了五种分配内存的方式。 1.Heap1.c 直接找到heap1.c来分析 可以看到,代码并不多,至少能说明heap1的分配内存方式应
阅读全文
摘要:FreeRTOS信号量简易分析 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:在多线程的系统中,通常要处理一些同步或资源竞争的问题,这时候可以使用信号量。 1.二值信号量 1.1二值信号量的创建 #define xSemaphoreCreateBinary() xQueueG
阅读全文
摘要:FreeROTS队列的简易分析 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:很多时候,我们需要任务与任务、中断与任务通信,FreeRTOS提供了队列来实现这些操作。 1.队列结构体 typedef struct QueueDefinition { int8_t *pcHea
阅读全文
摘要:FreeRTOS任务调度 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:上一篇我们分析了任务的切换,其中写到了在vTaskSwitchContext里面的taskSELECT_HIGHEST_PRIORITY_TASK,计算uxTopReadyPriority 的前导零值,那
阅读全文
摘要:FreeRTOS任务切换的简易分析 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:之前分析了创建任务、启动调度器,在做完这些工作后,就是该完成所有RTOS的最核心的部分,任务的上下文切换,可以说,任务切换就是RTOS。 在分析之前,先分析Cortex-M3的SVC和PendS
阅读全文
摘要:FreeRTOS调度器的启动简易分析 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:上一篇我分析了关于一个任务的创建过程,既然创建了任务,自然是要用。那么FreeRTOS中对于任务的切换,调度器发挥着巨大的作用,这是一个核心。 1.从函数vTaskStartScheduler
阅读全文
摘要:FreeRTOS任务的简易分析 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:毫无疑问,任务整个FreeRTOS的核心,所以分析起来很困难,我只能去各个地方看不同人的文档或笔记,把别人的东西变为自己的东西,最后记录这篇内容。我无法向介绍List那样把全部代码看一遍,只能把大概
阅读全文
摘要:FreeRTOS中断优先级和任务优先级 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言: 最开始,我并没有搞清楚什么是中断优先级和任务优先级,但看了部分资料后发现这两个并没有半毛钱关系,于是便有了这篇笔记,本篇文章以Cortex-M3(STM32F103)为例子。 1.Cort
阅读全文
摘要:FreeRTOS从简单的List入手 架构:Cortex-M3 版本:FreeRTOS V9.0.0 前言:打开List.c文件来看,200多行,并不是很多,详细看内容,其实就是一个双向链表的增和删 1.结构体List_t typedef struct xLIST { listFIRST_LIST_
阅读全文