一、创建任务的相关函数
1、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) }
因此
- osThreadDef相当于定义了一个 os_thread_def_Display常量,并且赋值。
- 宏定义中,##的作用就是把2个宏参数连接为1个数,或实现字符串的连接
- #的作用就是将#后面的宏参数进行字符串的操作,也就是将#后面的参数(Display)两边加上一对双引号使其成为字符串("Display")
osThreadDef()这个函数的最后一个参数设为0时表示使用默认栈大小。如果需要的话,也可以通过在线程结构
文章详细介绍了FreeRTOS中如何使用osThreadDef宏定义线程并创建任务,包括线程优先级、栈大小的设定以及osThreadCreate函数的使用。任务函数是一个无限循环的void类型函数,用于执行特定任务。通过osDelay函数实现任务间的调度和资源释放。
订阅专栏 解锁全文



4293

被折叠的 条评论
为什么被折叠?



