在Arduino上运行嵌入式操作系统FreeRTOS

FreeRTOS可以提供任务管理,队列管理,中断管理,资源管理和内存管理等功能,由于占用资源少,它可以运行在Arduino UNO R3开发板上。

可以在https://github.com/greiman/FreeRTOS-Arduino上下载到它,将下载到的FreeRTOS-Arduino-master.zip解压,并将/FreeRTOS-Arduino-master/libraries文件夹下的内容全部复制到Arduino IDE安装目录下的libraries文件夹里就可以使用了。下面是它提供的frBlink示例:


// frBlink.ino
#include 《FreeRTOS_AVR.h》
 
const uint8_t LED_PIN = 13;
SemaphoreHandle_t sem;
  
 static void Thread1(void* arg) {
    while (1) {
      xSemaphoreTake(sem, portMAX_DELAY);
     digitalWrite(LED_PIN, LOW);
   }
 }
 
 static void Thread2(void* arg) {
   pinMode(LED_PIN, OUTPUT);
 
   while (1) {
     digitalWrite(LED_PIN, HIGH);
     vTaskDelay((200L * configTICK_RATE_HZ) / 1000L);
     xSemaphoreGive(sem);
     vTaskDelay((200L * configTICK_RATE_HZ) / 1000L);
   }
}

void setup() {
   portBASE_TYPE s1, s2;
 
   Serial.begin(9600);
  
   sem = xSemaphoreCreateCounting(1, 0);
   s1 = xTaskCreate(Thread1, NULL, configMINIMAL_STACK_SIZE, NULL, 2, NULL);
   s2 = xTaskCreate(Thread2, NULL, configMINIMAL_STACK_SIZE, NULL, 1, NULL);
   if (sem== NULL || s1 != pdPASS || s2 != pdPASS ) {
     Serial.println(F("Creation problem"));
     while(1);
   }
 
   vTaskStartScheduler();
   Serial.println(F("Insufficient RAM"));
   while(1);
}

void loop() {
}


这个示例效果与Blink示例相同,它演示了FreeRTOS的任务创建,信号量以及任务睡眠等功能。

  除了6个基本示例外,FreeRTOSBook文件夹下提供了额外的16个示例;由于篇幅关系,请大家参阅这22个示例或其他关于FreeRTOS的书籍。


原文:https://www.cnblogs.com/lets-blu/p/7541766.html


- 本文内容来自网络,如有侵权,请联系本站处理。

2022-05   阅读(1246)   评论(0)
 标签: 创客电子 Arduino FreeRTOS

涨知识
欧姆定律

欧姆定律是指在同一电路中,通过某段导体的电流跟这段导体两端的电压成正比,跟这段导体的电阻成反比。该定律是由德国物理学家乔治·西蒙·欧姆1826年4月发表的《金属导电定律的测定》论文提出的。

评论:
相关文章
【ESP32 C++教程】Unit6-3 FreeRTOS任务间通信

本节主要讲解FreeRTOS任务间如何使用消息队列、事件组和二进制信号量进行通信。


【ESP32 C++教程】Unit6-2 FreeRTOS多任务

本节主要讲解Task类,FreeRTOS多任务的使用。


【ESP32 C++教程】Unit6-1 定时器

本节主要讲解Timer类,FreeRTOS定时器的使用。


ESP32 Arduino 开发框架

Arduino开发环境下适用于ESP32芯片系列开发板的应用开发框架。


【ESP32 C++教程】Unit1-2 C++类基础知识

本小节主要介绍C++ 类相关的基础知识,包括类的定义、继承、多态,范围作用域等。


【ESP32 C++教程】Unit1-1 开发环境准备

本讲主要介绍VSCode Arduino开发环境的搭建,及与Arduino IDE开发环境的比较。



Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32-FreeRTOS:大量FreeRTOS实例,供参考学习

ESP32-FreeRTOS项目提供了丰富的示例,帮助开发者快速掌握ESP32的硬件功能和FreeRTOS实时操作系统。