swtman 发表于 6 天前

【FireBeetle 2 ESP32-C5】 arduino环境搭建+FreeRTOS验证


FireBeetle 2 ESP32-C5介绍:





FireBeetle 2 ESP32-C5 IO套装包括两部分:Firebeetle 2 ESP32-C5 开发板和其专用的IO扩展底板。IO扩展板方便快速连接各种传感器外设,让Firebeetle 2 ESP32-C5开发板到手即用,无需焊接。FireBeetle 2 ESP32-C5 是一款搭载乐鑫 ESP32-C5 模组的低功耗 IoT 开发板,面向智能家居和广泛物联网场景,集高性能计算、多协议支持与智能电源管理于一体,为各种部署需求提供高可靠性、高灵活性与长续航的解决方案。提供 双频 Wi-Fi 6 连接(2.4 和 5 GHz) 以及蓝牙 5、Thread 和 Zigbee,便于无缝集成到智能家居平台 Home Assistant 等开源系统。


其性能参数如下:
处理器:RISC-V单核处理器
时钟频率:240 MHz
内存:384 KB
电子模块: 320 KB
闪存:4 MB
LP SRAM:16 KB

数字 I/O x18
带 6 通道的 LED PWM 控制器
SPI x1
UART x3 (LP UART x1)
I2C x2 (LP I2C x1)
I2S x1
红外收发器:5个发射通道,5个接收通道
1 个 12 位 SAR ADC,带 7 个通道
DMA 控制器,具有 3 个接收通道和 3 个发射通道


管脚分配如下

原理图如下:

arduino IDE安装:

下载最新板版本版本的
https://www.arduino.cc/en/software/





正常安装即可。

添加json:

https://github.com/espressif/arduino-esp32/releases/download/3.3.0-alpha1/package_esp32_dev_index_cn.json




支持包安装:
版本不可选错




FREE RTOS实现
目的实现两个任务
任务1:每秒,LED翻转,输出文字。
任务2:每2秒,串口输出信息。

头文件:
#include <Arduino.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>

LED管脚:
// 配置引脚(根据开发板调整LED引脚)
const uint8_t LED_PIN = GPIO_NUM_15; // 默认LED引脚(需根据开发板调整)


任务函数声明:
// 任务函数声明
void blinkLED(void *pvParameters);
void printMessage(void *pvParameters);

任务建立
void setup() {
Serial.begin(115200); // 初始化串口
pinMode(LED_PIN, OUTPUT);

// 创建任务1:闪烁LED
xTaskCreate(
    blinkLED,       // 任务函数
    "Blink Task",   // 任务名称
    2048,         // 栈大小(字节)
    NULL,         // 任务参数
    1,            // 优先级(1较低)
    NULL            // 任务句柄
);

// 创建任务2:串口打印
xTaskCreate(
    printMessage,
    "Print Task",
    2048,
    NULL,
    1,
    NULL
);

// 如果setup结束,loop任务会自动运行(优先级为1)
}


任务实现:
// 任务1:每1000ms切换LED状态
void blinkLED(void *pvParameters) {
for(;;) { // 无限循环
    digitalWrite(LED_PIN, !digitalRead(LED_PIN));
    Serial.println("LED状态切换");
    vTaskDelay(pdMS_TO_TICKS(1000)); // 非阻塞延时
}
vTaskDelete(NULL); // 安全退出(通常不会执行到这里)
}

// 任务2:每2秒打印消息
void printMessage(void *pvParameters) {
TickType_t lastWakeTime = xTaskGetTickCount();
const TickType_t period = pdMS_TO_TICKS(2000);

for(;;) {
    Serial.println("[系统] FreeRTOS运行中 | 芯片: ESP32-C5 | 内核数: 1");
    Serial.println("------------------------------------");
    vTaskDelayUntil(&lastWakeTime, period); // 精确周期延时
}
}




实验结果:



总结:
有了FreeRTOS,可以实现多任务进行开发。避免了阻塞。实现更多功能。

页: [1]
查看完整版本: 【FireBeetle 2 ESP32-C5】 arduino环境搭建+FreeRTOS验证