学习了任务的相关知识后,在MDK5中以STM32F407为开发板尝试任务的创建和删除。
任务创建有两种方式分别为动态创建和静态创建,分别通过调用vTaskcreat()和vTaskcreat_static()来创建。其区别是动态创建任务的堆栈由系统分配,而静态创建任务的堆栈由用户自己传递。
动态创建任务的原型
其中各个参数:pxTaskCode 任务函数(由用户自己编写的函数,一般为一个无限循环)
pcName 任务名(用于追踪和调试,最大长度不超过configMAX_TASK_NAME_LEN)
usStackDepth 任务堆栈大小(注意⚠️:申请到的堆栈大小为参数的4倍,通过宏定义得到)
pvParameters 传递给任务的参数(一般为NULL)
uxPriotiry 任务优先级(最大和最小不可取,通过宏定义得到)
pxCreatedTask 任务句柄(任务句柄,任务创建成功以后会返回此任务的任务句柄,这个句柄其实就是 任务的任务堆栈。此参数就用来保存这个任务句柄。其他 API 函数可能会使 用到这个句柄。)
返回值:
pdPASS 创建成功
errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY 任务创建失败,因为堆内存不足!