一、osThreadDef是一个宏定义
#define osThreadDef(name, thread, priority, instances, stacksz) \
const osThreadDef_t os_thread_def_##name = { #name, (thread), (priority), (instances), (stacksz) }
所以
osThreadDef(Display, DisLCD_Task,osPriorityNormal, 0, 128);
//相当于
const osThreadDef_t os_thread_def_Display = { "Display", (DisLCD_Task), (osPriorityNormal), (0), (128) }
相当于定义了一个 os_thread_def_Display常量,并且赋值。
宏定义中,##的作用就是把2个宏参数连接为1个数,或实现字符串的连接
#的作用就是将#后面的宏参数进行字符串的操作,也就是将#后面的参数两边加上一对双引号使其成为字符串
osThreadDef_t 是一个结构体定义
以上相于当定义了一个结构体变量os_thread_def_Display
二、osThreadCreate创建任务
DisplayLCDHandle = osThreadCreate(osThread(Display), NULL);
参数osThread(Display)也是一个宏定义
相当于
DisplayLCDHandle = osThreadCreate(os_thread_def_Display, NULL);
其中优先级还要经过计算才得到
-
总觉得这样定义优先级有点麻烦,如果想直接用数字定义优先级,可以通过修改以下2处实现