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

涨知识
中断

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

评论:
相关文章

ESP32 使用DAC模拟输出完成两路呼吸灯

ESP32的DAC函数可以实现真正的模拟输出。


在 ESP32 上使用 LEDC (PWM)

ESP32 没有Arduino输出 PWM 的 analogWrite(pin, value) 方法,取而代之的 ESP32 有一个 LEDC 来实现PWM功能。


《米思齐实战手册:Arduino图形化编程指南》

本书由少年创学院联合创始人兼院长、知名创客程晨撰写,以Arduino作为硬件平台,介绍了使用米思齐(Mixly)软件进行程序开发的方法。


Arduino UNO R4 WiFi 官方介绍文档

本文档作为UNO R4 WiFi的技术概览,您将找到一系列资源和指南链接,帮助您开始下一个项目。


OneButton: 用于使用单个按钮进行多用途输入的Arduino库

Arduino OneButton库是一个用于简化按钮操作的库,它可以轻松地处理按钮的单击、双击和长按等操作。适用于Arduino开发板以及ESP32等其他基于Arduino的开发板。


Arduino Bootloader

本文从Arduino Uno入手,看看怎样在这个"简单"的8bit单片机搭建一个属于自己的bootloader


Arduino IDE第三方开发包的制作

许多硬件厂商都希望自己的开发板能被Arduino IDE集成开发环境所支持。这里就以小脚丫开发板所使用的开发包为例,介绍一下第三方开发包的制作方法。


ESP32 SD卡读写

ESP32 可以通过 SDMMC 和 SPI 两种方式读取SD/TF卡数据。


搜索
小鹏STEM教研服务

专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。