在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   阅读(1208)   评论(0)
 标签: 创客 Arduino FreeRTOS

涨知识
3D打印

3D打印技术是增材制造技术,它利用计算机将需打印的物体3D模型切成一系列一定厚度的“薄片”,3D打印机自下而上地制造出每一层“薄片”,最后叠加成形出三维的实体物件。

评论:
相关文章
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实时操作系统。


物联网项目开发实战-第3章-自动浇花项目迭代2

本节我们在迭代一的基础上增加采集土壤湿度数据,并根据湿度数据来决定是否自动进行浇水动作。


Arduino 数据结构: 队列Queue

Queue 库提供了一个通用的 C++ 动态队列实现,专为在 Arduino 项目中使用而定制。


小鹏浇花套件单机版程序V1.0.0

本程序是小鹏物联网智能浇花套件的单机版程序(不连接物联网),供同学们参考。