zoukankan      html  css  js  c++  java
  • AVR开发 Arduino方法(七) 嵌入式操作系统FreeRTOS

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

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

     

     1 // frBlink.ino
     2 #include <FreeRTOS_AVR.h>
     3 
     4 const uint8_t LED_PIN = 13;
     5 SemaphoreHandle_t sem;
     6 
     7 static void Thread1(void* arg) {
     8   while (1) {
     9     xSemaphoreTake(sem, portMAX_DELAY);
    10     digitalWrite(LED_PIN, LOW);
    11   }
    12 }
    13 
    14 static void Thread2(void* arg) {
    15   pinMode(LED_PIN, OUTPUT);
    16 
    17   while (1) {
    18     digitalWrite(LED_PIN, HIGH);
    19     vTaskDelay((200L * configTICK_RATE_HZ) / 1000L);
    20     xSemaphoreGive(sem);
    21     vTaskDelay((200L * configTICK_RATE_HZ) / 1000L);
    22   }
    23 }
    24 
    25 void setup() {
    26   portBASE_TYPE s1, s2;
    27 
    28   Serial.begin(9600);
    29   
    30   sem = xSemaphoreCreateCounting(1, 0);
    31   s1 = xTaskCreate(Thread1, NULL, configMINIMAL_STACK_SIZE, NULL, 2, NULL);
    32   s2 = xTaskCreate(Thread2, NULL, configMINIMAL_STACK_SIZE, NULL, 1, NULL);
    33   if (sem== NULL || s1 != pdPASS || s2 != pdPASS ) {
    34     Serial.println(F("Creation problem"));
    35     while(1);
    36   }
    37 
    38   vTaskStartScheduler();
    39   Serial.println(F("Insufficient RAM"));
    40   while(1);
    41 }
    42 
    43 void loop() {
    44 }

     

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

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

     

  • 相关阅读:
    tp5 查询问题 字段自增 字段比较
    七牛云 {"error":"no such domain"}
    mac 命令
    跟微信公众号一起来学api安全
    vue 运行别人项目
    php sha1withrsa
    thinkphp5 使用路由下分页 form表单 搜索
    P2134 百日旅行 (斜率优化,DP)
    [USACO Section 4.4]追查坏牛奶Pollutant Control (最小割)
    [HAOI2007] 理想的正方形 (单调队列)
  • 原文地址:https://www.cnblogs.com/lets-blu/p/7541766.html
Copyright © 2011-2022 走看看