아두이노 freeRTOS 튜토리얼 1Arduino FreeRTOS2015. 1. 14. 14:59
Table of Contents
반응형
아래 포스팅으로 설치된 예제코드들을 하나씩 분석해보고 있습니다. 아두이노 코드랑 freeRTOS코드랑 같이 사용하는게 생소하네요. freeRTOS는 각 포팅되는 플랫폼에서 사용되는 함수들하고 같이 사용되어 지는 거 같네요.
Arduino Uno에서 freeRTOS 올려보기
http://webnautes.tistory.com/595
첫번째 예제는 두 개의 택스트가 시리얼로 문자열을 출력하는 예제입니다. Task2와 Task1이 번갈아 가며 출력됩니다.
- /* FreeRTOS.org includes. */
- //#include "FreeRTOS.h"
- //#include "task.h"
- #include "FreeRTOS_AVR.h"
- /* Demo includes. */
- #include "basic_io_avr.h"
- /* Used as a loop counter to create a very crude delay. */
- #define mainDELAY_LOOP_COUNT 400000 // ( 0xffffff )
- /* The task functions. */
- void vTask1( void *pvParameters );
- void vTask2( void *pvParameters );
- /*-----------------------------------------------------------*/
- void setup( void )
- {
- Serial.begin(9600);
- //태스크를 생성한다.
- static const char *string1 = "Task 1 is running\r\n"; //태스크로 넘겨줄 문자열
- xTaskCreate( vTask1, //태스크를 구현한 함수에 대한 포인터
- "Task 1", //태스크 이름
- 200, //스택 깊이
- (void*)string1, //태스크에 넘결 줄 매개변수에 대한 포인터
- 1, //태스크의 우선순위
- NULL ); //태스크 핸들
- //같은 방식으로 두번째 태스크를 생성한다.
- static const char *string2 = "Task 2 is running\r\n";
- xTaskCreate( vTask2, "Task 2", 200, (void*)string2, 1, NULL );
- //스케줄러를 시작한다. 이제 두 개의 태스크가 실행되게 된다.
- vTaskStartScheduler();
- //여기까지 실행된다면 메모리가 부족한 것이다.
- Serial.println( F("Insufficient RAM") );
- for( ;; );
- // return 0;
- }
- /*-----------------------------------------------------------*/
- void vTask1( void *pvParameters )
- {
- const char *pcTaskName = (char*)pvParameters;
- volatile unsigned long ul;
- //태스크는 무한 루프를 돈다.
- for( ;; )
- {
- //태스크 이름을 출력한다.
- vPrintString( pcTaskName );
- // vTaskDelay() 함수를 사용 하여 Delay 기능을 구현 하면
- // Delay 상태 동안 Task가 Suspended 상태가 되기
- // 때문에 Priority 에 관계 없이 다음 Task가 실행 된다.
- // 그러므로, Priority 에 따라 Task가 Running 되는 것을
- // 관찰 하기 위하여 for Loop를 이용한 Delay를 사용 한다.
- //참고 http://goo.gl/eizFMp
- for( ul = 0; ul < mainDELAY_LOOP_COUNT; ul++ )
- {
- }
- }
- }
- /*-----------------------------------------------------------*/
- void vTask2( void *pvParameters )
- {
- const char *pcTaskName = (char*)pvParameters;
- volatile unsigned long ul;
- //태스크는 무한 루프를 돈다.
- for( ;; )
- {
- vPrintString( pcTaskName );
- for( ul = 0; ul < mainDELAY_LOOP_COUNT; ul++ )
- {
- }
- }
- }
- void loop() {
- }
반응형
'Arduino FreeRTOS' 카테고리의 다른 글
아두이노 freeRTOS 튜토리얼 5 (0) | 2015.01.14 |
---|---|
아두이노 freeRTOS 튜토리얼 4 (0) | 2015.01.14 |
아두이노 freeRTOS 튜토리얼 3 (0) | 2015.01.14 |
아두이노 freeRTOS 튜토리얼 2 (0) | 2015.01.14 |
Arduino Uno에서 freeRTOS 올려보기 (0) | 2015.01.12 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!