프로그래밍/Arduino

[아두이노] 아두이노 쓰레드 사용(FreeRTOS)

Beginner:) 2022. 3. 15.
320x100

먼저 RTOS란 Real Time Operateing System으로 직역하면 실시간 OS이다.

 

윈도우, 리눅스와 달리 임베디드용과 같은 곳에 적재하기 위한 경량 OS이다.

 

그러므로 다른 OS에 비해 지원하는 기능은 적지만 빠르다.

 

FreeRTOS는 예상했다 싶이 무료이다. 

 

먼저 [툴] - [라이브러리 관리]에서 아래의 사진과 같이 FreeRTOS 라이브러리를 설치한다.

 

우노, 나노, 레오나르도, 메가를 지원한다.

 

 

 

이후 소스코드를 작성한다.

 

#include <Arduino_FreeRTOS.h>
void setup(){
  Serial.begin(9600);
  Serial.println("Setup");

  xTaskCreate(Task1, "Task1", 100, NULL, NULL, NULL);
  xTaskCreate(Task2, "Task2", 100, NULL, NULL, NULL);
}

void loop(){
  Serial.println("not used");
}

static void Task1(void* pvParameters){
  while(true){
    Serial.println("Task1");
    vTaskDelay(1000 / portTICK_PERIOD_MS);
  }
}

static void Task2(void* pvParameters){
  while(true){
    Serial.println(F("Task2"));
    vTaskDelay(2000 / portTICK_PERIOD_MS);
  }
}

 

setup 함수에서 보면 xTaskCreate를 한다. 즉 쓰레드를 생성한다.

 

매개변수는 차례대로 함수명, 테스크 이름, 스택 크기, 우선순위, 핸들러이다.

 

loop는 사용하지 않는다. 

반응형

댓글