Arduino-ESP32采用FREERTOS入门编程
文章平均质量分 53
本专栏为ESP32开发板的FREERTOS学习。(采用Arduino IDE进行开发)
爱摄影的寸头怪
研一,方向全息体表电调控
展开
-
FreeRtos API 查看
进入官网后可以点击Developer Docs进入开发者文档进行查看。其中API References可点击查看会有详细的函数用法。选择Support-Books&Manuals可以查看相关书籍。可以通过使用FreeRTOS官网查看API,官网地址如下。原创 2023-11-13 21:05:23 · 62 阅读 · 0 评论 -
在Arduino IDE上进行ESP32的安装
点击FILE->Preferences,看到Additional boards manager URLs,将我们复制的内容粘贴上去,如图。然后选择端口号,Tools->Port,如果不知到端口号是哪个,可以按win键后搜索设备管理器,进行查看,如图所示。操作流程:Tools->Board->Board Manager,完成后搜索esp32,安装如图红框中的最新版。其次,点击Tools->Boards->esp32,然后按照自己购买芯片的型号进行选择。打开后,我们一般选择稳定版本,如图。原创 2023-10-13 19:36:29 · 708 阅读 · 0 评论 -
Arduino-ESP32使用FREERTOS实现多任务电灯
如上图所示,将LED分别连接ESP32的D23、D21、D15引脚,此图为仿真,若在实际时间中应在电路上串联电阻。原创 2023-10-13 22:18:32 · 795 阅读 · 0 评论 -
Arduino-ESP32使用FREERTOS实现任务通过空指针类型传递参数
可以先跳到附件直接查看运行结果原创 2023-10-15 20:39:47 · 188 阅读 · 1 评论 -
Arduino-ESP32使用FREERTOS实现任务通过结构体指针传递多参数
实现功能同Arduino-ESP32使用FREERTOS实现多任务电灯。在上面的基础上实现三个LED同时闪烁,并使用串口打印信息。创建两个任务实现,两个LED灯的闪烁。首先,进行结构体指针的定义。原创 2023-10-15 21:41:24 · 228 阅读 · 1 评论 -
Arduino-ESP32使用FREERTOS使用相互排斥Mutex来解决竞争冒险Race Condition
B站UP主孤独的二进制视频的学习笔记原创 2023-11-05 21:24:27 · 233 阅读 · 1 评论 -
如何使用ESP32双核
孤独的二进制学习笔记原创 2023-11-05 22:23:50 · 208 阅读 · 1 评论 -
ESP32 FreeRtos 实现绝对任务延迟
孤独的二进制的学习笔记原创 2023-11-06 15:29:43 · 474 阅读 · 0 评论 -
ESP32 FreeRtos实现软件定时器
孤独的二进制学习笔记原创 2023-11-06 16:33:20 · 166 阅读 · 0 评论 -
ESP32 FreeRtos任务内存优化
孤独的二进制学习笔记原创 2023-11-06 21:20:59 · 251 阅读 · 0 评论 -
ESP32 FreeRtos 任务优先级
孤独的二进制学习笔记原创 2023-11-09 16:51:15 · 226 阅读 · 1 评论 -
ESP32 FreeRtos 看门狗
说明:看门狗是针对Task任务的Arduino-ESP32 默认在Core 0的 IDLE 任务开启了看门狗 时间为 5000 ticks = 5秒Core 0 和 Core 1 都运行了 FreeRTOS的IDLE任务,优先级为 0IDLE任务是用于清理被删除任务的内存Core 1 loopBack任务就是Arduino的 setup 和 loop 优先级为 1需要注意的是ESP32在Arduino编译器内,是自动在核心0开启看门狗的,并自动进行喂狗。原创 2023-11-09 21:55:10 · 679 阅读 · 1 评论 -
ESP32 FreeRtos 任务管理
孤独的二进制学习笔记原创 2023-11-09 09:09:50 · 132 阅读 · 1 评论 -
ESP32 FreeRtos 队列传输单种类数据
队列是一种数据结构,可以包含一组固定大小的数据。在创建队列的同时,队列的长度和所包含数据类型的大小就确认下来了。一个队列可以有多个写入数据的任务和多个读取数据的任务。当一个任务试图从队列读取数据的时候,它可以设置一个阻塞时间(block time)。这是当队列数据为空时,任务会进入阻塞状态的时间。当有数据在队列或者到达阻塞时间的时候,任务都会进入就绪状态。如果有多个任务同时在阻塞状态等待队列数据,优先级高的任务会在数据到达时进入就绪状态;在优先级相同的时候,等待时间长的任务会进入就绪状态。原创 2023-11-10 19:31:06 · 74 阅读 · 0 评论 -
ESP32 FreeRtos 队列传输多种类数据
通过队列+结构体的方式,将DHT22的温度和湿度数据在不同的任务间传输。原创 2023-11-10 20:03:33 · 105 阅读 · 0 评论 -
ESP32 FreeRtos 二进制信号量
信号量可以是二进制信号量也可以是计数信号量。二进制信号量可以看作是计数信号量的一种特殊形式,一般用于对共享资源的访问,信号量的初始值设为1。在计数信号量的情况下,计数值通常被实现为一个简单的无符号整数。当发送一个计数信号量时,增加信号量的值。当获取一个信号量时,则计数值递减。在任务获取信号量时,如果该值为0,则任务被阻塞,直到有其他任务或中断服务程序发送该信号量,该任务才退出阻塞状态进入就绪状态,如果此时该任务是就绪表中优先级最该的任务则获得运行的机会。原创 2023-11-10 21:54:46 · 166 阅读 · 0 评论 -
ESP32 FreeRtos 计数信号量
介绍内容同。原创 2023-11-11 10:04:37 · 46 阅读 · 0 评论 -
ESP32 FreeRtos 事件标志组
RTOS中的信号量、邮箱和消息队列都是事件。通过这些事件可以实现任务之间及任务和中断服务程序之间的通信。但信号量、邮箱和消息队列只能允许任务在阻塞状态下等待单个事件发生。当这些事件发生时,只能取消单个任务的阻塞状态。被取消阻塞状态的任务是等待事件列表中优先级最高的任务,对于FreeRtos,如果具有相同高优先级的任务等待该事件,则等待时间最长的那个任务获得该事件,从而取消阻塞状态。而事件组是RTOS的另一个功能,使用事件组可以实现多任务之间的同步。其具有如下特性。原创 2023-11-13 10:17:49 · 55 阅读 · 0 评论 -
ESP32 FreeRtos 流媒体
FreeRTOS 10以后引入了一个新的数据类型就是 Stream Buffer。它和Queue最大的不同就是,Stream Buffer读写的大小没有限制,而Queue是预设值好固定的类型和大小。Stream Buffer 流媒体缓存顾名思义它的受众对象就是流媒体,比如MP3,视频,在线电台等。原创 2023-11-13 11:48:20 · 117 阅读 · 0 评论 -
ESP32 FreeRtos 任务通知1(直接任务通知)
一个任务可以有多个notification,每个notification包含4个字节的value 和 1个字节的stats。stats用来记录当前的notification有没有被处理 pending or not pending,我们不能对stats进行直接的读写操作,是系统自动的。我们只能对notification value 进行操作。原创 2023-11-13 16:13:14 · 69 阅读 · 0 评论 -
ESP32 FreeRtos 任务通知2(直接任务通知取代二进制信号量)
直接任务通知相当于指定任务的二进制信号量。如需要实现三个发动机任务(因发动机需要经常运转来保持健康状态,所以三个任务需要轮流运行),而直接任务通知是指定任务,无法实现,因此,需要二进制信号量进行任务通信。API:xTaskNotifyGive // 相当于精简化的 xTaskNotify() + eIncrement (+1)原创 2023-11-13 17:12:11 · 58 阅读 · 0 评论 -
ESP32 FreeRtos 任务通知3(使用直接任务通知事件组)
任务通知使用的是32bits,而事件组是24bits,所以,只要不是涉及多个任务, 那么这个直接任务通知可以完全取代事件组。原创 2023-11-13 20:55:11 · 42 阅读 · 0 评论