커널에 올리는 코드라 그런지 thread를 사용할 수 없다.
대신, thread처럼 사용할 수 있는 os_tsk_create를 사용하자!
int main(void) {
...
os_sys_init(os_init);
...
}
os_sys_init 함수는 RTX(Real-Time eXecutive) 커널을 초기화하고 시작할 수 있는 함수이다.
그 안에 인자로 커널이 초기화된 후 시작할 태스크 함수를 넣어주자.
__task void os_init(void)
{
// 1
os_tsk_create(Test1, 3);
// 2
os_tsk_create_ex(Test2, 1, (void *)0);
os_tsk_delete_self();
}
os_tsk_create(테스크 함수, 우선순위);
os_tsk_create_ex(테스크 함수, 우선순위, 넘길 인자);
1 : 인자 없이 Test1 테스크 생성
2 : 인자 포함 Test2 테스트 생성 (여러개 넘길 시 구조체 사용하는 것이 좋다!)
// 1
__task void Test1(void)
{
//your code
}
// 2
__task void Test2(void *argv)
{
uint32_t num = (uint32_t)argv;
//your code
}
1 : 받는 인자 없으니 void로 생성
2 : void *argv로 인자를 받아 넘긴 인자 유형으로 캐스팅 후 사용
320x100
'프로그래밍 > Keil RTX' 카테고리의 다른 글
[C/Keil RTX] CAN 통신 (22) | 2023.01.03 |
---|---|
[C/RL-ARM KEIL] event 처리 구현 (60) | 2022.12.28 |
WDT이란? Watchdog이란? (32) | 2022.12.28 |
[C/RL-ARM KEIL] 포인터 사용하기 (malloc 대체) (0) | 2022.12.01 |
[C/Keil RTX] GPIO INPUT 이벤트 처리 (IRQHandler) (0) | 2022.12.01 |
댓글