摘要:
示例源码基于FreeRTOS V9.0.0 信号量 1. 概述 消息队列用于传输多个数据,但是有时候只需要传递状态,这个状态值需要用一个数值表示,在这种情况下我们只需要维护一个数值,使用信号量效率更高、更节省内存。 信号量用来表示资源的个数,它是特殊的队列实现,队列数据项为空。 对于二值信号量,队列 阅读全文
摘要:
示例源码基于FreeRTOS V9.0.0 队列集 1. 概述 队列集的本质也是队列,只不过里面存放的是“队列句柄”。 当任务需要及时读取多个队列时,可以使用队列集。它类似于posix的多路复用思想。可以将想要监听消息的队列放入队列集中,当其中有队列有数据达到时,队列集的接口会返回可读的队列句柄,用 阅读全文
摘要:
示例源码基于FreeRTOS V9.0.0 邮箱 1. 概述 一种特殊的队列,队列深度只有1,写数据的时候是覆盖写,读数据的时候,读完不会把数据从队列删除; 写数据的时候永远是成功的,读数据的时候仅第一次队列无数据时会阻塞或失败,当队列有数据后,读都会是成功的; 2. 接口API // 写队列 #d 阅读全文
摘要:
示例源码基于FreeRTOS V9.0.0 队列 1. 概述 FreeRTOS的队列,支持任务与任务间的通信,以及任务与中断间的通信。它是FreeRTOS系统中主要的任务间通信方式。 队列内的消息,是通过拷贝方式传递,而非指针。 队列除了基本的先进先出特性,也支持往队列首部写入数据。 FreeRTO 阅读全文
摘要:
示例源码基于FreeRTOS V9.0.0 链表 1 概述 链表一般可分为单向链表、双向链表、环形链表。FreeRTOS采用的是环形双向链表设计; 单向链表只有后继节点,双向链表有后继和前驱节点; 链表的目的是把元素串联,其设计方式一般有两种: 将元素放置在链表结构体中; 将链表结构体放置在元素中; 阅读全文
摘要:
示例源码基于FreeRTOS V9.0.0 内存管理 1 概述 FreeRTOS 有自己的一套内存管理机制,而非直接使用malloc和free等C库函数。 malloc和free由于实现复杂,代码量大,运行时间不确定,存在内存碎片,非线程安全等问题,不适用于资源紧缺的FreeRTOS系统; Free 阅读全文