ESP32FreeRTOS开发笔记:1.双核并行

        ESP32 的 Arduino 框架内部集成了 FreeRTOS,允许开发者利用其多任务处理功能。在代码中,xTaskCreatePinnedToCore 函数是 FreeRTOS 提供的 API,用于创建任务并指定任务在哪个核心上运行。

        FreeRTOS 是一个流行的实时操作系统内核,广泛用于嵌入式系统中,以实现任务调度、任务间通信和同步等功能。通过使用 FreeRTOS,开发者可以更高效地管理多个并发任务,从而提高系统的性能和响应能力。在 ESP32 的 Arduino 框架中,FreeRTOS 的集成使得开发者可以轻松地创建和管理多任务,而无需深入了解 FreeRTOS 的底层细节。

    下面我将编写一个示例,探索ESP32的多任务处理能力。在示例中,我们将创建两个任务——Task1和Task2,分别在ESP32的两个核心上运行。每个任务在其循环中打印当前运行的核心编号,并通过延迟函数模拟任务执行时间。

  1. 任务函数声明Task1 和 Task2 是两个任务函数,它们将在不同的核心上运行。
  2. setup() 函数:初始化串口通信,并使用 xTaskCreatePinnedToCore 函数创建两个任务,分别在核心0和核心1上运行。
  3. loop() 函数:主循环可以保持空闲,或者执行其他任务。在这个示例中,主循环只是简单地延迟1秒钟。
  4. Task1 和 Task2 函数:这两个函数分别在不同的核心上无限循环,每秒钟打印一次当前运行的核心编号。
  5. 堆栈大小10000 是任务的堆栈大小,可以根据实际需求进行调整。
  6. 任务优先级1 是任务的优先级,可以根据实际需求进行调整。
  7. 核心编号0 和 1 分别表示核心0和核心1。

        详细代码如下:

#include "Arduino.h"// 任务函数声明
void Task1(void *pvParameters);
void Task2(void *pvParameters);void setup() {Serial.begin(115200);delay(1000); // 等待串口监视器启动// 创建任务1,在核心0上运行xTaskCreatePinnedToCore(Task1,    // 任务函数"Task1",  // 任务名称10000,    // 堆栈大小NULL,     // 任务参数1,        // 任务优先级NULL,     // 任务句柄0);       // 核心编号// 创建任务2,在核心1上运行xTaskCreatePinnedToCore(Task2,    // 任务函数"Task2",  // 任务名称10000,    // 堆栈大小NULL,     // 任务参数1,        // 任务优先级NULL,     // 任务句柄1);       // 核心编号
}void loop() 
{delay(1000);
}// 任务1函数
void Task1(void *pvParameters) {for (;;) {Serial.println("Task1 running on Core: " + String(xPortGetCoreID()));delay(1000); // 模拟任务执行时间}
}// 任务2函数
void Task2(void *pvParameters) {for (;;) {Serial.println("Task2 running on Core: " + String(xPortGetCoreID()));delay(1000); // 模拟任务执行时间}
}

打开串口调试助手,可以看到结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/375088.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaSE学习笔记之内部类、枚举类和基本类型包装类

今天我们继续复习Java相关的知识,和大家分享有关内部类等方面的知识,希望大家喜欢。 目录​​​​​​​ 内部类 成员内部类 ​编辑 静态内部类 局部内部类 匿名内部类 枚举类 定义方法 基本类型包装类 自动装箱和拆箱 内部类 成员内部类 成…

《Windows API每日一练》9.1.5 自定义资源

自定义资源(Custom Resources)是在 Windows 程序中使用的一种资源类型,用于存储应用程序特定的数据、图像、音频、二进制文件等。通过自定义资源,开发者可以将应用程序所需的各种资源文件集中管理和存储,便于在程序中访…

从人工巡检到智能预警:视频AI智能监控技术在水库/河湖/水利防汛抗洪中的应用

一、背景需求分析 近日,我国多省市遭遇连日暴雨,导致水库、湖泊、河道等水域水位暴涨,城市内涝频发。随着夏季汛期的到来,降雨天气频繁,水利安全管理面临严峻挑战。为保障水库安全、预防和减少洪涝灾害,采…

文档去重(TF-IDF,MinHash, SimHash)

2个doc有些相似有些不相似,如何衡量这个相似度; 直接用Jaccard距离,计算量太大 TF-IDF: TF*IDF TF:该词在该文档中的出现次数, IDF:该词在所有文档中的多少个文档出现是DF,lg(N/(1DF)) MinHash …

windows上修改redis端口号

概况 redis是一个开源的内存数据结构存储系统,常用做数据库、缓存和消息代理。默认的端口号为6379 更改redis端口号步骤如下 先停止redis服务 redis-cli shutdowm 打开redis配置文件 在redis安装目录下,即redis.windows.conf文件。 port 6396 然后…

i18n、L10n、G11N 和 T9N 的含义

注:机翻,未校对。 Looking into localization for the first time can be terrifying, if only due to all of the abbreviations. But the meaning of i18n, L10n, G11N, and T9N, are all very easy to understand. 第一次研究本地化可能会很可怕&…

NI VST 毫米波测试仪器创新

目录 概览​从UHF至V频段的频率覆盖范围:54 GHz远程测量模块​PXIe-5842:VST架构的扩展54 GHz扩频PXIe-5842功能​​宽频覆盖范围​IF和毫米波测试端口可满足多频带需求​高达2 GHz瞬时带宽误差矢量幅度测量性能相位相干同步基于PXI平台集成多种仪器 互补…

Jmeter多用户登录操作实战

在使用Jmeter性能测试时,首先要解决的问题恐怕就会并发压测和多用登录的问题.今天就一篇文章讲清楚这两个问题的解决方案: 一.多并发压测如何配置线程? (1)同时并发:设置线程组、执行时间、循环次数,这种方式可以控制接口请求的…

01表操作/数类型定义

文章目录 表操作表的创建列的类型定义整数类型浮点类型和定点数类型日期和时间类型 表操作 表的创建 列的类型定义 整数类型 浮点类型和定点数类型 日期和时间类型

探索【Python面向对象】编程:新时代的高级编程范式详解

目录 1. 面向对象编程概念(OOP) 1.1 什么是类和对象? 1.2 类的定义 1.3 类和对象的关系 1.4 小李的理解 2. 抽象 2.1 抽象的概念 2.2 抽象类和方法 2.3 小李的理解 3. 类和实例 3.1 类的定义和实例化 3.2 类的属性和方法 3.3 小…

【Android】基于 LocationManager 原生实现定位打卡

目录 前言一、实现效果二、定位原理三、具体实现1. 获取权限2. 页面绘制3. 获取经纬度4. 方法调用5. 坐标转换6. 距离计算7. 完整代码 前言 最近公司有个新需求,想要用定位进行考勤打卡,在距离打卡地一定范围内才可以进行打卡。本文将借鉴 RxTool 的 Rx…

【安全设备】入侵检测

一、什么是入侵检测 入侵检测是一种网络安全技术,用于监测和识别对计算机系统或网络的恶意使用行为或未经授权的访问。入侵检测系统(IDS)是实现这一目标的技术手段,其主要目的是确保计算机系统的安全,通过及时发现并报…

蜂窝互联网接入:连接世界的无缝体验

通过Wi—Fi,人们可以方便地接入互联网,但无线局域网的覆盖范围通常只有10~100m。当我们携带笔记本电脑在外面四处移动时,并不是在所有地方都能找到可接入互联网的Wi—Fi热点,这时候蜂窝移动通信系统可以为我们提供广域…

Lingo学习(三)——工厂合并、运算符、内置函数

一、工厂合并 (一) 工厂合并——生产二维矩阵 【引入】 sets: factory /1..6/ : a; plant /1..8/ : d; Cooperation(factory,p lant) : c, x; endsets 以上程序可…

Ubuntu编译PX4固件

目录 前言 准备编译参考 前言 要想自己编译PX4固件需要交叉编译器,交叉编译器可以将 x86架构 平台上写好程序编译出来,而编译出来的可执行文件是能用到 arm架构 的平台上。 本次编译是以 px4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18…

按下快门前的算法——对焦

对焦算法可以分为测距式,相位式,反差式。 其中测距式是通过激光,(TOF,Time of Flight)等主动式地得知物距,然后对焦。更常用的是后两者。 反差式CDAF(Contrast Detection Auto Foc…

设计模式7-装饰模式

设计模式7-装饰模式 写在前面动机模式定义结构代码推导原始代码解决问题分析 选择装饰模式的理由1. 职责分离(Single Responsibility Principle)2. 动态扩展功能3. 避免类爆炸4. 开闭原则(Open/Closed Principle)5. 更好的组合复用…

Vulkan入门系列0- Vulkan与OpenGL的区别

一:概述 Vulkan 是新一代图形和计算API,是由科纳斯组织(Khronos Group)维护的一套跨平台的、开放标准的、现代GPU 的编程接口,它仅仅是规定了一套编程接口,并没有接口的具体实现,实现是由硬件厂商适配实现的,市面上像NVIDIA、AMD和Intel等国际大厂基本提供了完整的…

一天20MW!天途推出无人机全自主光伏巡检平台

01 光伏电站的运维挑战 光伏发电为人类提供了可持续的清洁能源供给。一般集中式电站建设在空旷的地区,如荒地、沙漠等地区;分布式电站建设在用户的屋顶和建筑物表面,如住宅、商业建筑、工业厂房等地区。 随着光伏电站的大规模的使用&#x…

流程图编辑框架LogicFlow-vue-ts和js

LogicFlow官网https://site.logic-flow.cn/LogicFlow 是一款流程图编辑框架,提供了一系列流程图交互、编辑所必需的功能和灵活的节点自定义、插件等拓展机制。LogicFlow支持前端研发自定义开发各种逻辑编排场景,如流程图、ER图、BPMN流程等。在工作审批配…