一. 简介
创建线程有两种方式,根据是否由rt分配内存,分为静态创建线程和动态创建线程。默认是静态分配线程,如果需要使用动态创建线程的话,则需要开启宏定义RT_USING_HEAP,并设置heap相关函数。
二. 静态创建线程
rt_err_t rt_thread_init(struct rt_thread* thread, const char* name, void (*entry)(void* parameter), void* parameter, void* stack_start, rt_uint32_t stack_size, rt_uint8_t priority, rt_uint32_t tick);
thread : 线程句柄
name :线程名字
parameter :线程入口函数
stack_start: 线程栈起始地址
stack_size : 线程栈的大小
priority: 线程的优先级
tick: 线程的时间片大小
rt_thread_init(&thread_led, "thread1", thread_led_On, RT_NULL, thread_Led_stack, sizeof(thread_Led_stack), 30,5);
三. 动态创建线程
调用这个函数,会返回线程句柄。
rt_thread_t rt_thread_create(const char* name, void (*entry)(void* parameter), void* parameter, rt_uint32_t stack_size, rt_uint8_t priority, rt_uint32_t tick);
在使用这个函数的时候,需要先在rtconfig.h中开启
#define RT_USING_HEAP
宏定义(默认是注释掉了的)
然后在board.c里面设置RT_HEAP_SIZE的大小就可以了。
四. 启动线程
启动线程非常简单,只需要调用这个函数即可。参数是线程句柄。
rt_thread_startup(&thread_led);
五. PS
优先级等级默认为8(然后它这里注释的是为32),如果初始化线程的时候,优先级大于8了的话,线程就不会启动了。优先级等级可以在rtconfig.h修改。
公众号:FPGA之旅