freertos
文章平均质量分 56
Gkbytes
这个作者很懒,什么都没留下…
展开
-
06_FreeRTOS队列(结构体队列)
06_FreeRTOS队列(结构体队列)如果要发送不同的数据类型,则必须使用结构体队列。xQueueHandle St_Queue_Handler;定义结构体:typedef struct { char *str; int counter; uint16_t large_value;} my_struct;创造队列: /***** create QUEUE *****/ osMessageQDef(Queue01, 1, my_struct); Queue01Handle原创 2020-07-08 22:41:39 · 1796 阅读 · 7 评论 -
05_FreeRTOS 队列(简单队列)
05_FreeRTOS 队列(简单队列)介绍如何使用Queue在任务之间进行通信。下面是队列如何工作的流程:队列是任务之间发送和接收数据的最简单方法。首先,我们将使用简单队列,其中队列中的所有元素都是相同的数据类型,然后我们将使用结构化队列,其中数据类型可以不同。简单队列在一个简单的队列中,所有元素都是同一类型。队列由其处理程序识别,因此我们首先需要为该队列创建一个处理程序:osMessageQId Queue01Handle;接下来,在main函数内部,我们将创建一个Queue,该队列可以原创 2020-07-08 22:41:29 · 874 阅读 · 0 评论 -
04_FreeRTOS 计数信号量
04_FreeRTOS 使用计数信号量本文将介绍:a. 使用CMSIS API ,介绍FreeRTOS中计数信号量b. 不使用CMSIS API,直接使用FreeRTOS函数简介计数信号量可用于控制对资源的访问。要获得对资源的控制,任务必须首先获得信号量。因此减少了信号量计数值。当计数值达到零时,将没有可用资源。当任务使用资源完成时,它将“give”信号量,从而增加信号量计数值。设置部分CubeMX中启用计数信号量:FreeRTOS中计数信号量3.1 使用CMSIS API原创 2020-07-08 22:41:19 · 275 阅读 · 0 评论 -
03_FreeRTOS 二进制信号量
03_FreeRTOS 使用二进制信号量本文介绍:二进制信号量的使用方法简介信号量Binary Semaphore之所以称为Binary信号量,是因为它存在(‘1’)或不存在(‘0’)。其中没有第三个条件。因此,任务要么具有信号量,要么根本没有。对于Task,我们可以创建一个条件,使其必须具有信号量才能执行自身。因此,如果Task没有信号量,则它别无选择,只能等待当前具有信号量的Task释放它。假设关键部分正在运行“低优先级任务”。高优先级任务可以在任何时间抢占低优先级任务。但是,如果低优先原创 2020-07-08 22:41:08 · 870 阅读 · 1 评论 -
02_FreeRTOS 任务管理
02_FreeRTOS 任务管理本文将介绍:a. 创建任务b. 任务执行c. 挂起任务和恢复任务d. 在一定状态停止任务一段时间附录:如何在STM32CubeIDE中加入printf打印解决STM32CubeIDE 用串口printf 进入hardfault配置STM32CubeIDE,把vTaskDelayUntil 设置为Enabled创建任务分三部:2.1 创建任务ID2.2 使用osThreadDef定义线程2.3 创建线程并将ID分配给任务处理程序。参照01原创 2020-07-08 22:40:53 · 402 阅读 · 0 评论 -
01_FreeRTOS 任务优先级
FreeRTOS 任务优先级RTOS即为操作系统。主要目的是使我们可以同时使用多个任务。本文将介绍:a. 使用CubeMX 设置的免费RTOS。b. 使用RTOS的好处。c. 在没有CubeMX情况下创建任务。d. 使用优先级来解决一些常见的问题设置CubeMX1.1 由于FreeRTOS v1大多数STM32设备都支持,故选择CMSIS_V1。1.2 转到Tasks and Queues, 注意Task name、priority和entry function即可。1.3 新建另外原创 2020-07-08 22:40:40 · 2210 阅读 · 1 评论