Zephyr Project RTOS Tutorial (4) 教學 : Kernel API – Thread Test

文章作者: 盧宜良

Thread 在 RTOS 裡面非常的好用,使用者不需用main裡輪詢的方式,各個Thread 獨立,讓多位使用者協做時可以更專注於開發,加速程式碼的整合。
Kernel API : Thread :
k_thread_create 創建兩個 Thread 與 main Thread,分別 k_sleep 不同時間,並運行結果。

程式部分重點:

/* thread test */
#define STACKSIZE 1000
char thread_stacks[2][STACKSIZE];
static struct k_thread threads[2];

void thread_1(void *arg1, void *arg2, void *arg3)
{
	while (1) {
		printk("thread_1\n");
		k_sleep(600);
	}
}

void thread_2(void *arg1, void *arg2, void *arg3)
{
	while (1) {
		printk("thread_2\n");
		k_sleep(300);
	}
}

void main(void)
{
    console_init();
	printk("Hello World! %s\n", CONFIG_ARCH);
	k_thread_create(&threads[0], &thread_stacks[0][0], STACKSIZE,
			thread_1, 0, 0, 0,
			K_PRIO_COOP(4), 0, 0);

	k_thread_create(&threads[1], &thread_stacks[1][0], STACKSIZE,
			thread_2, 0, 0, 0,
			K_PRIO_COOP(4), 0, 0);
	while (1) {
			printk("MAIN\n");
			k_sleep(1000);
	}
}
未經允許不得轉載:GoMCU » Zephyr Project RTOS Tutorial (4) 教學 : Kernel API – Thread Test