(一)线程控制块:
(1)、线程创建:
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)
入口参数:
name:线程名称
entry:线程入口函数
parameter:线程入口函数参数
stack_size:线程栈大小,单位字节
priority:线程优先级,数字越小优先级越高
tick:线程时间片
返回参数:
thread:线程创建成功,返回线程句柄
RT_NULL:线程创建失败
(2)、线程启动:
rt_err_t rt_thread_startup(rt_thread_t thread)
入口参数:
thread:线程句柄
返回参数:
RT_EOK:线程启动成功
-RT_ERROR:线程启动失败
举例:
/********************************************************/
//函数名称:void TaskLed_Entry(void* parameter)
//功能描述:led灯线程入口函数
//全局变量:无
//参数说明:无
//返回说明:无
//说 明:实现led灯500ms反转一次
/********************************************************/
void TaskLed_Entry(void* parameter)
{
while(1)
{
LEDONOFF;
rt_thread_mdelay(500);
//rt_kprintf("Running Task_Led!\n");
}
}
/********************************************************/
//函数名称:void Task_Led_Init(void)
//功能描述:led灯线程初始化函数
//全局变量:无
//参数说明:无
//返回说明:无
//说 明:初始化led灯线程
/********************************************************/
void Task_Led_Init(void)
{
rt_thread_t thread_taskled_ptr = RT_NULL;
thread_taskled_ptr = rt_thread_create("TaskLed", TaskLed_Entry, RT_NULL, 128, 2, 10);
if(thread_taskled_ptr != RT_NULL)
{
rt_thread_startup(thread_taskled_ptr);
}
}