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
发布评论请先 登录
相关推荐
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次下载
HC05 蓝牙模块 连接 ESP32 经典蓝牙
概述HC05是一款常用的经典蓝牙模块,某宝有大量销售,主从机一体,而ESP32的蓝牙兼容经典蓝牙和低功耗蓝牙,本文介绍如何使用HC05作为主机连接ESP32的经典蓝牙ESP32从机配置
发表于 11-24 12:36
•65次下载
FreeRTOS消息队列 & ESP32使用
FreeRTOS消息队列 & ESP32实战FreeRTOS消息队列FreeRTOS的消息队列和操作系统课中讲的消息队列大差不差,都是为了有序的、安全的在多任务间在发送信息。下
发表于 12-03 17:51
•1次下载
esp32 例程 蓝牙_wifi&蓝牙MCU 该不该选ESP32
ESP32 将天线开关、RF balun、功率放大器、接收低噪声放大器、滤波器、电源管理模块等功能集于一体。ESP32 只需极少的外围器件,即可实现强大的处理性能、可靠的安全性能,和 Wi-Fi &am...
发表于 12-06 20:06
•31次下载
nodemcu与matlab,关于ESP8266 NodeMcu和ESP32 DEV模块两者的区别
什么是ESP32?ESP8266 Wi-Fi模块是过去几年中最受欢迎和最实用的模块之一。市场上有这种模块的各种版本。
发表于 12-17 18:03
•2次下载
基于ESP32的智能LPG探测器
本方案是基于 ESP32 的智能 LPG 探测器,使用 ESP RainMaker 生成电话警报通知的智能 LPG 检漏仪设备。需求硬件乐鑫 ESP32-DevKit-DMQ6 - LPG 丙烷气
发表于 12-22 11:41
•0次下载
LoRa模块SX1278与ESP32结合使用的方法-上
在本篇文章中,我们将学习如何将LoRa模块SX1278与ESP32结合使用。在这里,我们将使用两个LoRa模块-一个连接到ESP32,另一个连接到Arduino开发板。
评论