FreeRTOS(5)——静态任务创建和删除

一、任务创建和删除的API函数

任务的创建和删除本质就是调用FreeRTOS的API函数

API函数描述
xTaskCreate()动态方式创建任务
xTaskCreateStatic静态方式创建任务
vTaskDelete删除任务

二、动态创建任务

1、动态创建任务函数

BaseType_t xTaskCreat
(
   TaskFuntion_t pxTaskCode, //指向任务函数的指针
const char*const pcName, //任务名字
   const configSTACK_DEPTH_TYPE usStackDepth, //任务堆栈大小
   void*const pvParameters, //传递给任务函数的参数
   UBaseType_t uxPriority, //任务优先级
   TaskHandle_t*const pxCreateTask //任务句柄


)
返回值描述
pdPASS任务创建成功
errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY任务创建失败

2、实现动态创建任务流程

(1)将宏configSUPPORT_DYNAMIC_ALLOCATION配置为1

(2)定义函数入口参数

(2)定义函数入口参数

函数创建的任务会立刻进入就绪态,由任务调度器调度运行

三、静态创建任务

1、静态创建任务函数

TaskHandle_t xTaskCreatStatic
(
   TaskFuntion_t pxTaskCode, //指向任务函数的指针
const char*const pcName, //任务名字
   const uint32_t ulStackDepth, //任务堆栈大小,单位为字
   void*const pvParameters, //传递给任务函数的参数
   UBaseType_t uxPriority, //任务优先级
   StackType_t*const puxStackBuffer, //任务堆栈
   StackType_t*const pxTaskBuffer //任务控制块指针
)
返回值描述
NULL用户没有提供相应的内存,任务创建失败
其他值任务句柄,任务创建成功

2、静态创建任务使用流程

(1)将宏configSUPPORT_DYNAMIC_ALLOCATION配置为1

(2)定义空闲任务&定时器任务的任务堆栈及TCB

(3)实现两个接口函数( vAPPlicationGetldleTaskMemory()和vAPPlicationGetTimerTaskMemory() )

(4)定义函数入口参数

(5)定义函数入口参数

函数创建的任务会立刻进入就绪态,由任务调度器调度运

3、静态创建内部实现

1、TCB结构体成员赋值

2、添加新任务到就绪列表中

三、任务删除函数

void vTaskDelete(TaskHandle_t xTaskToDelete);

形参描述
xTaskToDelete待删除任务的任务句柄

用于删除已经被创建的任务

ps.

1、当传入的参数为NULL,则代表删除任务自身(即当前正在运行的任务)

2、空闲任务会负责释放被删除任务中由系统分配的内存,但是由用户在任务删除前申请的内存,则需要由用户在任务呗删除前提前释放,否则将导致内存泄漏

删除任务流程

(1)将宏INCLUDE_vTaskDelete配置为1

(2)入口参数输入需要删除的任务句柄(NULL代表删除本身)

内部实现过程

1、获取所要删除任务的控制块:通过传入的任务句柄,判断所需要删除哪个任务

2、将被删除任务,移除所在列表:将该任务在所在列表中移除,包括:就绪、阻塞、挂起等列表

3、判断所需要删除的任务:删除任务自身,需先添加到等待删除列表,内存释放将在空闲任务执行。删除其他任务,释放内存,任务数量

4、更新下个任务的阻塞时间:更新下一个任务的阻塞超时时间,以防被删除的任务就是下一个阻塞超时的任务

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇