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);
}

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

    关注

    2552

    文章

    51383

    浏览量

    756337
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62361
  • 实时操作系统

    关注

    1

    文章

    199

    浏览量

    30819
  • ESP32
    +关注

    关注

    18

    文章

    977

    浏览量

    17504
收藏 人收藏

    评论

    相关推荐

    基于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和Bluetooth模块闪烁LED

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

    ESP32模组的主要特性

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

    ESP32 SDIO 使用教程

    ESP32 SDIO 使用教程本文旨在说明如何使用标准的 ESP32-WROOM-32D 开发板进行 SDIO 的通信。本文档适用于所有需要与 ESP32 SDIO slave 通信的方案
    发表于 11-23 17:51 233次下载
    <b class='flag-5'>ESP32</b> SDIO 使用教程

    HC05 蓝牙模块 连接 ESP32 经典蓝牙

    概述HC05是一款常用的经典蓝牙模块,某宝有大量销售,主从机一体,而ESP32的蓝牙兼容经典蓝牙和低功耗蓝牙,本文介绍如何使用HC05作为主机连接ESP32的经典蓝牙ESP32从机配置
    发表于 11-24 12:36 65次下载
    HC05 蓝牙<b class='flag-5'>模块</b> 连接 <b class='flag-5'>ESP32</b> 经典蓝牙

    FreeRTOS消息队列 & ESP32使用

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

    esp32 例程 蓝牙_wifi&amp;蓝牙MCU 该不该选ESP32

    ESP32 将天线开关、RF balun、功率放大器、接收低噪声放大器、滤波器、电源管理模块等功能集于一体。ESP32 只需极少的外围器件,即可实现强大的处理性能、可靠的安全性能,和 Wi-Fi &am...
    发表于 12-06 20:06 31次下载
    <b class='flag-5'>esp32</b> 例程 蓝牙_wifi&amp;蓝牙MCU  该不该选<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 8次下载
    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.6w次阅读
    如何使用Arduino IDE进行<b class='flag-5'>ESP32</b>双核编程

    基于ESP32的智能LPG探测器

    本方案是基于 ESP32 的智能 LPG 探测器,使用 ESP RainMaker 生成电话警报通知的智能 LPG 检漏仪设备。需求硬件乐鑫 ESP32-DevKit-DMQ6 - LPG 丙烷气
    发表于 12-22 11:41 0次下载

    ESP32 GT U7 GPS模块开源

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

    LoRa模块SX1278与ESP32结合使用的方法-上

    在本篇文章中,我们将学习如何将LoRa模块SX1278与ESP32结合使用。在这里,我们将使用两个LoRa模块-一个连接到ESP32,另一个连接到Arduino开发板。
    的头像 发表于 01-21 11:30 3799次阅读
    LoRa<b class='flag-5'>模块</b>SX1278与<b class='flag-5'>ESP32</b>结合使用的方法-上

    ESP32 PWM驱动电机

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

    ESP32ESP32通过Internet进行通信

    电子发烧友网站提供《ESP32ESP32通过Internet进行通信.zip》资料免费下载
    发表于 06-15 09:58 4次下载
    <b class='flag-5'>ESP32</b>到<b class='flag-5'>ESP32</b>通过Internet进行通信