반응형

 

 

네번째 예제와 달리 두 개의 태스크의 우선순위를 똑같이 하더라도 번갈아가며 실행되는 것을 볼 수 있다.

 

  1. /* FreeRTOS.org includes. */  
  2. //#include "FreeRTOS.h"  
  3. //#include "task.h"  
  4. #include "FreeRTOS_AVR.h"  
  5.     
  6. /* Demo includes. */  
  7. #include "basic_io_avr.h"  
  8.     
  9.     
  10. //태스크에서 사용되는 함수   
  11. void vTaskFunction( void *pvParameters );  
  12.     
  13. //태스크로 넘겨줄  개의 문자열을 선언  
  14. const char *pcTextForTask1 = "Task 1 is running\r\n";  
  15. const char *pcTextForTask2 = "Task 2 is running\t\n";  
  16.     
  17. /*-----------------------------------------------------------*/  
  18.     
  19. void setup( void )  
  20. {  
  21.   Serial.begin(9600);  
  22.       
  23.   //첫번째 태스크는 우선순위 1 생성하고   
  24.   xTaskCreate( vTaskFunction, "Task 1", 200, (void*)pcTextForTask1, 1, NULL );  
  25.     
  26.   //두번째 태스크의 우선순위 2 1 바꾸어 실행해본다.  
  27.   xTaskCreate( vTaskFunction, "Task 2", 200, (void*)pcTextForTask2, 2, NULL );  
  28.     
  29.   //스케줄러를 시작한다.  
  30.   vTaskStartScheduler();  
  31.     
  32.   for( ;; );  
  33.   //  return 0;  
  34. }  
  35. /*-----------------------------------------------------------*/  
  36.     
  37. void vTaskFunction( void *pvParameters )  
  38. {  
  39.   char *pcTaskName;  
  40.   pcTaskName = ( char * ) pvParameters;  
  41.     
  42.   //현재  카운트로 초기화 해준다.  
  43.   TickType_t xLastWakeTime = xTaskGetTickCount();  
  44.       
  45.       
  46.   for( ;; )  
  47.   {  
  48.     //태스크 이름을 출력  
  49.     vPrintString( pcTaskName );  
  50.     
  51.     //주어진 시간동안 태스크를 대기 상태로 만든다.  
  52.     //vTaskDelay 태스크가 깨어난 이후부터 상대적인 시간을 측정한다  
  53.     //정확히 250밀리세컨드 마다 태스크가 실행되도록 하기 위해선   
  54.     //vTaskDelayUntil함수를 사용해야 한다.xLastWakeTime변수값은 내부적으로  
  55.     //자동으로 업데이트 된다.  
  56.     vTaskDelayUntil( &xLastWakeTime, ( 250 / portTICK_PERIOD_MS ) );  
  57.   }  
  58. }  
  59. //-----------------------------------------------------------------  
  60. void loop() {}  


반응형

해보고 확인한 것을 문서화하여 기록합니다.


공부한 내용을 공유하는 공간입니다.
부족함이 있지만 도움이 되었으면 합니다.
잘못된 부분이나 개선점을 알려주시면 감사하겠습니다.



포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
문제가 생기면 포스트와 바뀐 환경이 있나 먼저 확인해보세요.

질문을 남겨주면 가능한 빨리 답변드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

TistoryWhaleSkin3.4">