
FreeRTOS
文章平均质量分 92
JiaYu嵌入式
物联网工程、嵌入式工程师、嵌入式讲师、高校竞赛导师、高校毕设导师
展开
-
FreeRTOS的任务优先级、Tick以及状态讲解(尊敬的嵌入式工程师,不妨进来喝杯茶)
在FreeRTOS中,任务的暂停状态(Suspended State)表示任务被显式地挂起,使得该任务不再参与调度,即不会被执行。在这个案例中,任务1的优先级为1,任务2的优先级为2。在以上例子中,xTaskCreate创建了一个任务,vTaskResume恢复了一个挂起的任务,xSemaphoreTake和xTaskDelay是任务等待事件或超时的示例。在FreeRTOS中,任务的就绪状态(Ready State)表示任务已经准备好被调度执行,但由于有其他高优先级的任务正在运行,该任务暂时还未被调度。原创 2023-12-10 17:10:42 · 2799 阅读 · 0 评论 -
FreeRTOS的任务创建/删除(详解,很简单)
在FreeRTOS中,任务(Task)是系统中执行的基本单元。任务是一段具有独立执行流的代码,它可以在系统中独立运行。每个任务都有自己的栈空间和程序计数器(Program Counter),使得它能够保持自己的上下文并独立于其他任务运行。在FreeRTOS中,任务的创建和调度由内核负责。任务可以具有不同的优先级,高优先级的任务将在低优先级任务之前执行。FreeRTOS使用抢占式调度(Preemptive Scheduling),这意味着如果有更高优先级的任务准备好运行,它可以抢占当前正在运行的任务。原创 2023-12-10 16:38:11 · 1582 阅读 · 0 评论 -
FreeRTOS的内存管理方法(超详细)
xPortGetFreeHeapSize() API 函数返回未分配的堆空间总量, (允许优化 configTOTAL_HEAP_SIZE 设置), 但不提供关于未分配的内存如何被碎片化成小块的信息。如果分配成功, 它会返回指向分配的内存块中最低字节的指针。每个提供的实现都包含在单独的源文件中 (分别是 heap_1.c、 heap_2.c、heap_3.c、heap_4.c 和 heap_5.c), 位于主 RTOS 源代码下载内容的 Source/Portable/MemMang 目录下。原创 2023-12-09 22:12:38 · 5664 阅读 · 1 评论 -
FreeRTOS 中互斥锁的使用
在以上的代码片段中,xMutex 是互斥锁的句柄,xSemaphoreTake() 用于获取锁,xSemaphoreGive() 用于释放锁。在这个例子中,使用 xMutex 作为互斥锁的句柄,两个任务 Task1 和 Task2 分别尝试获取互斥锁,对共享资源进行读写,并在操作后释放互斥锁。需要注意的是,虽然互斥锁能够解决竞态条件问题,但过度使用锁可能导致性能问题,因为锁的获取和释放会引入额外的开销。在不同的编程语言和操作系统中,互斥锁的实现方式可能会有所不同,但基本的思想是一致的。原创 2023-12-09 16:52:38 · 2849 阅读 · 2 评论 -
STM32中除零运算,为何程序不崩溃?
当在STM32单片机上运行除零运算的C程序时,如果发生除零错误,处理器可能会引发一个异常,然后通过相应的异常处理程序进行处理。在 STM32 单片机上,这种行为可能是由硬件的浮点单元(FPU)引起的。如果在程序中进行整数除法时除数为零,会导致 undefined behavior(未定义行为),这意味着程序的行为将是不确定的,可能导致崩溃或产生不正确的结果。在任何情况下,依赖于未定义行为(如除以零)可能会导致不可预测的结果,因此最好的做法是在代码中显式检查除零情况,并采取适当的措施来处理或避免这种情况。原创 2023-10-26 22:04:09 · 2267 阅读 · 0 评论 -
任务调度器详解(FreeRTOS)
任务调度器是实时操作系统(RTOS)的一个关键组件,它负责决定在多个可运行任务中哪一个将获得CPU时间以执行。它基于任务的优先级和状态来做出这些决定。在一个RTOS中,可能会有多个任务同时运行,但是在任意时刻,CPU只能执行一个任务。任务调度器的主要目标是按照系统的需求合理分配CPU时间。基本功能任务的选择:任务调度器会根据预设的算法从所有可运行的任务中选择一个要执行的任务。任务的优先级:任务通常会被分配一个优先级,优先级越高的任务在抢占式调度中会优先执行。任务状态管理。原创 2023-10-24 22:55:53 · 3192 阅读 · 1 评论 -
FreeRTOS基础(如何学好FreeRTOS?)
任务间通信方式的选择:根据具体的应用场景和需求,选择合适的任务间通信方式,如信号量、互斥锁、消息队列等,以确保任务之间的有效通信。深入理解RTOS的工作原理:学习RTOS的核心原理和机制,包括任务调度、中断处理、内存管理等,可以帮助你更好地使用和优化RTOS。了解FreeRTOS的最新版本和更新:保持对FreeRTOS最新版本和更新的关注,以确保你能够使用最新的功能和修复了的bug。任务堆栈和堆大小的调优:了解如何根据任务的需求和系统资源来调整任务的堆栈大小和堆大小,以避免堆栈溢出和内存分配问题。原创 2023-10-24 00:04:31 · 560 阅读 · 0 评论 -
裸机与RTOS(概念、关系、区别)
STM32系列微控制器通常与多个RTOS兼容,这些RTOS可以帮助开发者更轻松地实现多任务处理、中断服务例程、任务调度等功能,从而简化嵌入式系统的开发。RTOS通常提供了丰富的功能,包括任务管理、中断处理、实时时钟服务等,使得开发者能够更容易地构建复杂的嵌入式系统。在一些资源有限、对实时性能要求不高的简单项目中,裸机开发可能更为合适。裸机开发和RTOS(实时操作系统)开发都是在嵌入式系统中的两种不同的开发方式,各自有一些优点和缺点。在STM32中的裸机开发是直接在STM32微控制器上运行程序的开发方式。原创 2023-10-22 22:12:24 · 10489 阅读 · 2 评论