随笔分类 - 嵌入式开发 / 05. FreeRTOS实时操作系统
摘要:一、FreeRTOS的内存管理 内存管理是指软件运行时对内存资源的分配和使用的一种计数,其最主要的目的就是为了能够高效且快速地分配,并且在释放的时候释放不再使用的内存空间。 在使用 FreeRTOS 创建任务、队列、信号量等对象的时候,FreeRTOS 一般都提供了两种方法,一种是动态地申请创建对象
阅读全文
摘要:一、FreeRTOS的低功耗模式简介 FreeRTOS 的低功耗 Tickless 模式是基于硬件层面的相应低功耗模式实现的。 在整个系统的运行过程中,其实大部分的时间是在执行空闲任务的,而空闲任务之所及叫做空闲任务,是因为空闲任务是在系统中的所有其它都阻塞或被挂起时才运行的,因此可以在本该空闲任务
阅读全文
摘要:一、FreeRTOS的软件定时器 1.1、FreeRTOS的软件定时器简介 软件定时器是指具有定时功能的软件,FreeRTOS 提供的软件定时器允许在创建前设置一个软件定时器定时超时时间,在软件定时器成功创建并启动后,软件定时器开始定时,当软件定时器的定时时间达到或超过先前设置好的软件定时器定时器超
阅读全文
摘要:一、FreeRTOS的任务通知 1.1、FreeRTOS的任务通知的简介 在 FreeRTOS 中,每一个任务都有两个用于任务通知功能的数组,分别为 任务通知数组 和 任务通知状态数组。其中 任务通知数组 中的每一个元素都是一个 32 位无符号类型的通知值;而 任务通知状态数组 中的元素则表示与之对
阅读全文
摘要:一、FreeRTOS的事件标志简介 事件标志 是一个用于指示事件是否发生的比特位,因为一个事件是否发生只有两种情况,分别为事件发生和事件未发生,因此只需一个比特位就能够表示事件是否发生(1 表示事件发生,用 0 表示事件未发生)。FreeRTOS 将多个事件标志储存在一个变量类型为 EventBit
阅读全文
摘要:一、FreeRTOS的信号量简介 信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。其中,“同步”指的是任务间的同步,即信号量可以使得一个任务等待另一个任务完成某件事情后,才继续执行;而“有序访问”指的是对被多任务或中断访问的共享资源(如全局变量)的管理,当一个任务在访问(读取或写入)一
阅读全文
摘要:一、FreeRTOS的队列集 在使用队列进行任务之间的“沟通交流”时,一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集。FreeRTOS 提供的队列集功能可以对多个队列进行“监听”,只要被监听的队列中有一个队列有有效的消息,那么队列集的读
阅读全文
摘要:一、FreeRTOS的队列 队列是一种任务到任务、任务到中断、中断到任务数据交流的一种机制。在队列中可以存储数量有限、大小固定的多个数据,队列中的每一个数据叫做队列项目,队列能够存储队列项目的最大数量称为队列的长度,在创建队列的时候,就需要指定所创建队列的长度及队列项目的大小。因为队列是用来在任务与
阅读全文
摘要:一、FreeRTOS的系统时钟节拍 任务的操作系统需要时钟节拍,FreeRTOS 有一个系统时钟节拍计数器(xTickCount),xTickCount 是一个全局变量,在 tasks.c 文件中有定义,具体的代码如下所示: PRIVILEGED_DATA static volatile TickT
阅读全文
摘要:一、FreeRTOS任务相关API函数 1.1、获取指定任务的任务优先级 uxTaskPriorityGet() 函数用于 获取指定任务的任务优先级,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置项 INCLUDE_uxTaskPriorityGet 为 1,此函数的函数原型如
阅读全文
摘要:一、开启任务调度 vTaskStartScheduler() 函数用于启动任务调度器,任务调度器启动后,FreeRTOS 便会开始进行任务调度,除非调用函数 xTaskEndScheduler() 停止任务调度器,否则不会再返回。函数 vTaskStartScheduler() 的代码如下所示: v
阅读全文
摘要:一、FreeRTOS的列表和列表项简介 1.1、FreeRTOS的列表 列表是 FreeRTOS 中最基本的一种数据结构,其在物理存储单元上是非连续、非顺序的。FreeRTOS 中的列表是一个双向链表,在 list.h 文件中,有列表的相关定义,具体代码如下所示: typedef struct xL
阅读全文
摘要:一、什么是中断 让 CPU 打断正常运行的程序,转而去处理紧急的事件(程序),就叫 中断 。中断执行机制,可以简单概括为三步: 中断请求 ,外设产生中断请求,例如 GPIO 外部中断、定时器中断。 响应中断 ,CPU 停止执行当前程序,转而去处理中断处理程序(ISR)。 退出中断 ,执行完毕,返回被
阅读全文
摘要:一、任务创建和删除 任务的创建和删除本质上就是调用 FreeRTOS 的 API 函数。 1.1、动态方式创建任务 xTaskCreate() 函数用于使用动态的方式创建任务,任务的任务控制块以及任务的栈空间所需的内存,均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,若使用此函数,需要
阅读全文
摘要:一、FreeRTOS的简介 1.1、什么是RTOS 操作系统是允许多个任务 “同时运行” 的,操作系统的这个特性被称为多任务。然而实际上,一个 CPU 核心在某一时刻只能运行一个任务,而操作系统中任务调度器的责任就是决定在某一时刻 CPU 究竟要运行哪一个任务,任务调度器使得 CPU 在各个任务之间
阅读全文

浙公网安备 33010602011771号