![](https://img-blog.csdnimg.cn/direct/b9808ff35d2e4e338a300df63bf484d9.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
freeRTOS-ESP32
文章平均质量分 86
freeRTOS-ESP32
宁子希
github地址https://github.com/1589326497?tab=repositories
展开
-
20. FreeRTOS 直接任务通知当邮箱使用
任务通知是FreeRTOS提供的一种轻量级的任务间通信方式。每个任务都有一个与之关联的32位无符号整数,该整数就是任务通知的值。任务可以等待其任务通知的值被设置,也可以检查其任务通知的值是否已经被设置。原创 2024-06-04 15:47:54 · 319 阅读 · 0 评论 -
19. FreeRTOS 直接任务通知 代替 事件组
直接任务通知和事件组各有优缺点。直接任务通知高效、简单,但适用场景有限;事件组灵活、功能强大,但需要更多的内存和处理时间。原创 2024-06-04 14:31:19 · 283 阅读 · 0 评论 -
18. FreeRTOS 直接任务通知取代取代二进制信号量
直接任务通知可以用来替代二进制信号量在任务之间进行同步和简单的事件通知。这个方法有很多好处,比如**占用更少内存**:直接任务通知与任务控制块(TCB)直接相关,不需要额外的内存分配,而二进制信号量则需要额外的信号量控制块。**更高效**:直接任务通知避免了信号量获取和释放的开销,直接修改任务的内部状态,提高了性能。**更简洁**:直接任务通知提供了简洁的 API 调用,减少了代码的复杂性。原创 2024-06-04 11:39:43 · 332 阅读 · 0 评论 -
17.FreeRTOS直接任务通知 Notification
FreeRTOS 直接任务通知提供了一种高效的任务间通信机制,可以实现任务间的同步和协作,适用于多种实时嵌入式系统中。通过简单的 API 调用,任务可以发送和接收直接任务通知,从而实现灵活的任务管理和事件触发。原创 2024-06-03 20:18:47 · 893 阅读 · 0 评论 -
16.FreeRTOS数据结构:StreamBuffer,MessageBuffer和Queue的区别
在嵌入式系统开发中,任务间的通信是非常重要的一部分。FreeRTOS提供了多种数据结构来实现任务间的通信,包括`StreamBuffer`,`MessageBuffer`和`Queue`。这三种数据结构各又什么特点又有什么区别呢?原创 2024-06-02 23:34:10 · 640 阅读 · 0 评论 -
15.FreeRTOS 消息缓存 Message Buffer
消息缓存是 FreeRTOS 提供的一种数据结构,用于在任务之间传递变长消息。与队列不同,队列适合固定长度的数据项,而消息缓存可以处理长度可变的消息。这使得消息缓存非常适用于需要传递不同长度消息的场景,比如传输字符串或结构化数据。FreeRTOS 消息缓存通过在发送和接收消息时记录和读取消息长度,确保了消息的完整传递。这样的设计使得发送的数据和接收的数据大小相等,从而保证了任务间通信的一致性和可靠性。原创 2024-06-02 22:40:22 · 865 阅读 · 0 评论 -
14.FreeRTOS 流媒体缓存 Stream Buffer
Stream Buffer 是 FreeRTOS 提供的一种数据结构,专门用于在任务之间传递和处理流式数据。与队列不同,Stream Buffer 适用于大数据块的流式传输,而不是单个数据项的传输。这使得它非常适合用于音频、视频和其他连续数据流的场景。原创 2024-06-02 21:40:12 · 1297 阅读 · 0 评论 -
13.FreeRTOS使用事件标记组
事件标记组是一个24(在 FreeRTOS 中,默认情况下,事件标记组的位数是 24 位)位的变量,每一位(bit)可以独立地被设置或清除。任务可以等待一个或多个事件标记被设置,并且可以选择等待所有指定的事件标记都被设置或任意一个被设置。当某个事件发生时,任务可以设置对应的事件标记,通知等待这些标记的任务。原创 2024-06-02 18:17:54 · 584 阅读 · 0 评论 -
12.FreeRTOS使用计数信号量进行任务同步与资源管理
计数信号量是一种特殊的信号量,与二进制信号量不同,它的计数值可以超过1。计数信号量的计数值用于跟踪资源的可用性,允许多个任务同时访问共享资源,但受到最大计数值的限制。原创 2024-02-01 18:43:29 · 698 阅读 · 0 评论 -
11.FreeRTOS 使用 二进制信号量进行任务同步
二进制信号量是一种同步机制,用于控制任务之间的访问。它只有两种状态:可用和不可用。任务可以尝试获取二进制信号量,如果信号量可用,则任务获取成功并继续执行;如果信号量不可用,则任务会被阻塞,直到信号量变为可用。原创 2024-02-01 18:21:52 · 506 阅读 · 0 评论 -
10.FreeRTOS使用队列在任务间传输单种或多种类型任务
FreeRTOS是一个开源的实时操作系统内核,专为嵌入式系统设计。它提供了任务调度、信号量、消息队列等功能,使得开发者能够方便地创建多任务应用程序。在ESP32上,FreeRTOS被用作默认的操作系统,与Arduino框架无缝集成,为开发者提供了强大的多任务处理能力。原创 2024-02-01 15:35:48 · 702 阅读 · 0 评论 -
9.ESP32 看门狗:保障系统稳定运行的重要机制
初始化看门狗定时器。参数timeout:超时时间,单位为毫秒。参数panic:如果设置为true,系统将在看门狗超时时重启,如果设置为false,则只是记录错误。关闭并清除看门狗定时器。将任务添加到看门狗定时器的监视列表中。如果任务在超时时间内没有被重置,看门狗将重置系统。参数task:要添加到看门狗监视列表的任务句柄。从看门狗定时器的监视列表中删除任务。参数task:要从看门狗监视列表中删除的任务句柄。重置看门狗定时器。在任务中定期调用此函数,以防止看门狗超时重置系统。结论。原创 2024-01-30 19:58:09 · 1733 阅读 · 0 评论 -
8.FreeRTOS 任务优先级
任务优先级是 FreeRTOS 中用于调度任务的一个重要属性。在 FreeRTOS 中,系统中的每个任务都有一个优先级,优先级越高的任务将优先被调度执行。任务优先级是一个非负整数,取值范围通常是 0 到 (configMAX_PRIORITIES - 1),其中 configMAX_PRIORITIES 是 FreeRTOS 配置文件中定义的最大优先级数量。任务优先级是 FreeRTOS 中任务调度的重要机制之一,它决定了任务的执行顺序和调度方式。原创 2024-01-26 20:26:08 · 1595 阅读 · 0 评论 -
7.FreeRTOS任务管理和多种状态
在 FreeRTOS 中,任务是系统中的基本执行单元,每个任务都有自己的任务控制块(TCB),用于存储任务的状态、优先级、堆栈指针等信息。任务调度器根据任务的优先级和状态来决定哪个任务应该运行。FreeRTOS 提供的任务管理的函数,用于创建、删除、暂停和恢复任务。功能:用于创建一个新的任务。参数:函数原型如下:BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,pxTaskCode:任务函数的指针。pcName:任务的名称字符串。原创 2024-01-26 18:21:23 · 817 阅读 · 0 评论 -
6.freeRTOS 内存设置优化
首先,系统的总堆内存大小为 376696 字节,空闲堆内存大小为 351784 字节。原创 2024-01-26 12:16:32 · 897 阅读 · 0 评论 -
5.在FreeRTOS上使用软定时器的ESP32开发指南
FreeRTOS软定时器是FreeRTOS操作系统中的一个功能模块,允许开发者创建定时任务,以执行特定的操作。与硬件定时器不同,软定时器是通过软件实现的,更加灵活。通过使用FreeRTOS软定时器,你可以在ESP32项目中轻松实现定时任务,而无需使用硬件定时器。这种灵活性使得在实时操作系统中管理任务变得更加容易,提高了系统的可维护性和稳定性。原创 2024-01-25 16:00:51 · 476 阅读 · 0 评论 -
4.在 ESP32 上使用 FreeRTOS 进行绝对任务调度
FreeRTOS是一个开源的实时操作系统内核,专为嵌入式系统设计。它提供了任务调度、时间管理、任务通信和同步等功能,使得开发者能够更轻松地开发实时应用程序。FreeRTOS的内核代码高度可移植,因此可以在不同的硬件平台上运行。相对延迟,绝对延迟是任务在 FreeRTOS 中进行时间控制时使用的两种不同方式。在ESP32上使用FreeRTOS的函数,可以轻松实现绝对延迟的任务调度。这种方式非常适用于实时应用程序,其中任务的执行时序对系统的正确性和性能有严格要求。原创 2024-01-24 17:53:29 · 752 阅读 · 0 评论 -
3.在ESP32上充分利用双核的FreeRTOS多核编程
定义将在各个核心上运行的任务函数。每个任务函数中可以包含不同的逻辑,根据需要进行处理。// 核心0的任务逻辑// 核心1的任务逻辑通过充分利用ESP32的双核,可以在不同的核心上运行不同的任务,提高系统性能和响应速度。在项目中,可以根据具体需求合理规划任务分配,达到最佳的多核利用效果。同时,在低功耗应用中,通过任务分配和控制核心工作状态,可以有效地实现功耗的优化。在ESP32上使用双核是一种高效的多核编程方式,值得开发者深入学习和应用。原创 2024-01-23 19:32:39 · 3011 阅读 · 0 评论 -
2.freeRTOS使用互斥锁(Mutex)解决多任务竞争冒险
竞争冒险是指当多个任务同时尝试修改共享资源时,由于执行顺序的不确定性,导致程序产生意外结果或未定义行为的情况。这可能包括数据损坏、逻辑错误或系统崩溃等问题。在嵌入式系统中,竞争冒险是一种常见的错误,特别是在没有适当同步机制的情况下。使用互斥锁是在多任务系统中确保共享资源安全访问的一种重要方法。通过适当地使用互斥锁,我们能够有效地避免竞争冒险,提高系统的稳定性和可靠性。在FreeRTOS中,互斥锁的简单实现使得开发者可以方便地应对多任务并发访问共享资源的挑战。原创 2024-01-23 18:48:56 · 2479 阅读 · 0 评论 -
1.在ESP32 Arduino框架上实验FreeRTOS:多任务操作系统的简介与应用
实时操作系统是一种专为实时应用程序设计的操作系统。实时应用程序对任务的响应时间有严格的要求,因此实时操作系统必须能够在预定的时间内完成任务的调度和执行。这与通用操作系统(如Windows、Linux)的设计目标有所不同,通用操作系统更注重用户体验和各种应用程序的同时运行。实时操作系统通常用于嵌入式系统、航空航天、医疗设备、汽车控制系统等领域,这些领域对系统的响应时间和可靠性要求非常高。原创 2024-01-23 17:23:26 · 3043 阅读 · 0 评论