본문 바로가기
프로그래밍/Keil RTX

[C/RL-ARM KEIL] thread 대신 os_tsk_create 사용하기

by 채연2 2022. 12. 1.

커널에 올리는 코드라 그런지 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

댓글