0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP32模块的FreeRTOS内核分配

CHANBAEK 来源:头条号平凡小冬默 作者:头条号平凡小冬默 2023-05-18 16:25 次阅读

Esp32 模块中已经提供了 FreeRTOS(实时操作系统)固件。 FreeRTOS有助于提高系统性能和管理模块的资源。 FreeRTOS允许用户处理多项任务,如测量传感器读数,发出网络请求,控制电机速度等,所有这些任务都可以同时独立运行。

FreeRTOS为不同的应用程序提供了多个API。 这些 API 可用于创建任务并使其在不同内核上运行。 您需要创建任务以将代码的特定部分分配给特定内核。 您还可以确定代码将在哪个内核上运行的优先级。 优先级值以 level*0 开头。

每当我们在Arduino IDE上运行代码时,默认情况下,它会在core*1上运行。
您可以使用一个函数xPortGetCoreID()来检查代码在哪个内核上运行。

void setup()
{
Serial.begin(115200);
Serial.print( ” setup() is running on: Core_” );
Serial.println( xPortGetCoreID() );
delay(1000);
}
void loop()
{
Serial.print( ” loop() is running on: Core_” );
Serial.println( xPortGetCoreID() );
delay(1000);
}

这段代码中,我们将使用两个led由不同的核心处理。

TaskHandle_t task1;
TaskHandle_t task2;
//将gpio引脚分配给led
const int led1 = LED_BUILTIN;
const int led2 = 25;
void setup() {
Serial.begin(115200 );
pinMode( led1, OUTPUT );
pinMode( led2, OUTPUT );
//创建一个在Task1code()函数中执行的任务,优先级为1,在核心1上执行
xTaskCreatePinnedToCore(task_1code, // Task function.
“Task1”,//任务名称
10000, //任务的堆栈大小
NULL,//任务的参数
1, //任务的优先级
&task1,//跟踪创建任务的任务句柄
1); //指定核心1的任务
delay(1000);
创建一个在Task2code()函数中执行的任务,优先级为1,并在核心1上执行
xTaskCreatePinnedToCore(task_2code, //Task function.
“task2”,//任务名称
10000,  //任务的堆栈大小
NULL, //任务的参数
1,//任务的优先级
&task2,//跟踪创建任务的任务句柄
0); //指定核心1的任务
delay(1000);
}
//task_1code: LED每1000毫秒闪烁一次
void task_1code( void * pvParameters ){
Serial.print( “task1 running on: core ” );
Serial.println( xPortGetCoreID() );
for(;;)
{
digitalWrite( led1, HIGH);
delay(1000);
digitalWrite(led1, LOW);
delay(1000);
}
}
//task_2code: LED每500毫秒闪烁一次
void task_2code( void * pvParameters )
{
Serial.print( “task2 running on: core ” );
Serial.println(xPortGetCoreID() );
for(;;){
digitalWrite(led2, HIGH );
delay(500);
digitalWrite(led2, LOW );
delay(500);
}
}
void loop()
{
Serial.print( ” loop() is running on: Core ” );
Serial.println( xPortGetCoreID() );
delay(1000);
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48120

    浏览量

    740161
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61351
  • 实时操作系统

    关注

    1

    文章

    184

    浏览量

    30523
  • ESP32
    +关注

    关注

    13

    文章

    896

    浏览量

    15818
收藏 人收藏

    评论

    相关推荐

    基于Arduino IDE进行的ESP32编程方案

    ESP模块因其Wi-Fi功能(如ESP8266、ESP-12E等)而广受欢迎。这些都是具有Wi-Fi功能的强大微控制器模块。还有一个
    的头像 发表于 01-09 11:25 1.6w次阅读
    基于Arduino IDE进行的<b class='flag-5'>ESP32</b>编程方案

    ESP32--FreeRTOS任务的创建与删除过程是怎样的?

    ESP32--FreeRTOS任务的创建与删除过程是怎样的?
    发表于 01-14 06:02

    ESP32 Rev 3内存分配差异是什么?

    我看到了一些奇怪的东西,想知道新旧 ESP32 Rev 3 芯片(WROVER-E 模块)之间是否存在差异。我有一个围绕 ESP32 设计的产品。最近我们在上一次构建大约一年后进行了新的制造运行
    发表于 04-12 06:38

    请问esp32是arm内核吗?

    esp32是arm内核么还是什么?
    发表于 09-22 06:45

    如何使用ESP32和Bluetooth模块闪烁LED

    在本教程中,将LED的阳极连接到ESP32的p21,LED的阴极连接到ESP32的GND
    的头像 发表于 10-05 17:50 8695次阅读
    如何使用<b class='flag-5'>ESP32</b>和Bluetooth<b class='flag-5'>模块</b>闪烁LED

    ESP32模组的主要特性

    WT-ESP32-DevKitC V4是一款基于ESP32的小型开发板,集WIFI+蓝牙方案于一体,板上模组绝大部分管脚均已引出,开发人员可根据实际需求,轻松通过跳线连接多种外围器件,或将开发板直接
    发表于 11-04 14:54 3476次阅读

    ESP32ESP-IDF 教学(九)—— 串口通信(UART)

    使用简介二、使用 UART 收发数据1、设置 UART 参数① 单步法(结构体法)② 分步法2、分配引脚,安装驱动二、使用 UART 事件三、自定义 UART 中断一、ESP32 的 UART 概览1、简介ESP32芯片有三个
    发表于 11-26 13:21 42次下载
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教学(九)—— 串口通信(UART)

    FreeRTOS消息队列 & ESP32使用

    FreeRTOS消息队列 & ESP32实战FreeRTOS消息队列FreeRTOS的消息队列和操作系统课中讲的消息队列大差不差,都是为了有序的、安全的在多任务间在发送信息。下
    发表于 12-03 17:51 1次下载
    <b class='flag-5'>FreeRTOS</b>消息队列 & <b class='flag-5'>ESP32</b>使用

    FreeRTOS信号量 & ESP32实战

    FreeRTOS信号量 & ESP32实战阅读建议:有一定操作系统基础知识。FreeRTOS信号量1. 二值信号量  二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似
    发表于 12-03 18:06 1次下载
    <b class='flag-5'>FreeRTOS</b>信号量 & <b class='flag-5'>ESP32</b>实战

    nodemcu与matlab,关于ESP8266 NodeMcu和ESP32 DEV模块两者的区别

    什么是ESP32ESP8266 Wi-Fi模块是过去几年中最受欢迎和最实用的模块之一。市场上有这种模块的各种版本。
    发表于 12-17 18:03 2次下载
    nodemcu与matlab,关于<b class='flag-5'>ESP</b>8266 NodeMcu和<b class='flag-5'>ESP32</b> DEV<b class='flag-5'>模块</b>两者的区别

    DIY ESP32模块

    电子发烧友网站提供《DIY ESP32模块.zip》资料免费下载
    发表于 07-04 14:22 6次下载
    DIY <b class='flag-5'>ESP32</b><b class='flag-5'>模块</b>

    如何使用Arduino IDE进行ESP32双核编程

    ESP 模块因其 Wi-Fi 功能而广受欢迎,例如ESP8266、ESP-12E等。这些都是具有 Wi-Fi 功能的强大微控制器模块。还有一
    的头像 发表于 08-18 17:20 2.4w次阅读
    如何使用Arduino IDE进行<b class='flag-5'>ESP32</b>双核编程

    介绍一个使用ESP32模块开发的信息显示器

    这是一个使用ESP32模块开发的信息显示器。同时也可以作为ESP32开发套件,自由实现所需功能,倾向于语音播报、终端显示方向的应用。
    的头像 发表于 11-21 10:47 1848次阅读

    ESP32 GT U7 GPS模块开源

    电子发烧友网站提供《ESP32 GT U7 GPS模块开源.zip》资料免费下载
    发表于 01-04 10:58 0次下载
    <b class='flag-5'>ESP32</b> GT U7 GPS<b class='flag-5'>模块</b>开源

    ESP32 PWM驱动电机

    ESP32 寻迹模块测试 寻迹模块测试 所选设备 ESP32使用PWM 示例代码 寻迹模块测试 所选设备 ’
    发表于 03-20 11:37 2次下载
    <b class='flag-5'>ESP32</b> PWM驱动电机