STM32F107 micro C-OS 3 RTOS : Priority Scheduling

카테고리 없음

2019. 4. 15. 22:52

LED 출력 설정

bsp.c에 정의되어 있는 BSP_LED_Init() 함수를 사용하면 RCC를 이용한 APB2 Clock Enable GPIOD 포트에 연결되어 있는 LED 포트들의 Output 설정이 가능하다. 현재 보드의 LED 포트는 2,3,4, 그리고 7번 포트인데 이에 대한 설정이 바르게 되어있지 않아 아래와 같이 설정하였다.

BSP_LED_Init() in bsp.c
LED Port Output Setting in bsp.h

두 개의 Task 생성

APP_TASK_START_PRIO Check

App_cfg.h에서 AppTaskStartPriority APP_TASK_START_PRIO2로 설정되어 있는 것을 확인하였고 AppTask1AppTask2 두개의 task를 생성하기 위하여 각각의 TCBStack 변수 및 함수 프로토타입을 정의하였다.

Definition of TCB, stack, and function prototype of each tasks

이후 아래와 같이 AppTask1, AppTask2 태스크를 AppTaskStart 태스크 내에서 OSTaskCreate()를 이용하여 생성하였다. 이 때 PriorityAppTask14, AppTask25으로 설정하였다.

Task Creation

LED 및 태스크 동작

BSP_LED_Toggle() 함수가 원하는대로 동작하지 않아 MyLedToggle()함수를 직접 정의하여 사용하였다.

Self-Defined LED Toggle Function

인자로 전달한 정수에 따라 해당하는 LED가 토글되는데, OSTimeDlyHMSM() 함수를 사용하여 다음으로 우선순위가 높은 Task가 실행될 수 있도록 하였다.

l  PRIORITY

-       AppTaskStart -> 2

-       AppTask1 -> 4,

-       AppTask2 -> 5

l  Delay Time

-       AppTaskStart -> 3 seconds

-       AppTask1 -> 1 second

-       AppTask2 -> 2 seconds

l  LED Number

-       AppTaskStart -> 3

-       AppTask1 -> 1

-       AppTask2 -> 2

AppTaskStart loop

동작 모습