当前位置:网站首页>FreeRTOS experiment -- delete task
FreeRTOS experiment -- delete task
2022-08-02 12:31:00 【Mountain,】
Tasks can now be created,Then of course it can also be deleted,For certain tasks that are not needed once or a few times,can be done after execution,Delete this task,It can be deleted by another task,You can also task yourself to delete yourself.
任务删除函数:void vTaskDelete( TaskHandle_t xTaskToDelete );
Its parameter is the handle of the task,It is the fifth parameter of the create task function.
之前说过,A task handle is actually just oneTCB结构体,Store some information about the task,When doing something with a task,Just pass the task handle to the corresponding function.
So to delete a task, just pass the handle of the task to be deleted to the delete task function.
代码:
首先创建三个任务,在任务2中,任务2执行100次之后,调用vTaskDelete(NULL);函数,Delete yourself;在任务3中,任务3执行200次之后,任务3调用vTaskDelete(xHandleTask1);function put task1删除.注意vTaskDelete()中,参数写入NULLIt means to delete the task itself.
static volatile int Task1RunningFlag = 0;
static volatile int Task2RunningFlag = 0;
static volatile int Task3RunningFlag = 0;
TaskHandle_t xHandleTask1;
void Task1(void * param)
{
while(1)
{
Task1RunningFlag = 1;
Task2RunningFlag = 0;
Task3RunningFlag = 0;
printf("A");
}
}
TaskHandle_t xHandleTask2;
void Task2(void * param)
{
int i = 0;
while(1)
{
Task1RunningFlag = 0;
Task2RunningFlag = 1;
Task3RunningFlag = 0;
printf("a");
if(i++ == 100)
{
vTaskDelete(NULL);
}
}
}
StackType_t xTask3Stack[100];
StaticTask_t xTask3Tcb;
void Task3(void * param)
{
int i = 0;
while(1)
{
Task1RunningFlag = 0;
Task2RunningFlag = 0;
Task3RunningFlag = 1;
printf("1");
if(i++ == 200)
{
vTaskDelete(xHandleTask1);
}
}
}
StackType_t xIdleTaskStack[100];
StaticTask_t xIdleTaskTcb;
void vApplicationGetIdleTaskMemory(StaticTask_t * * ppxIdleTaskTCBBuffer, StackType_t * * ppxIdleTaskStackBuffer, uint32_t * pulIdleTaskStackSize)
{
*ppxIdleTaskTCBBuffer = &xIdleTaskTcb;
*ppxIdleTaskStackBuffer = xIdleTaskStack;
*pulIdleTaskStackSize = 100;
}
主函数:
int main( void )
{
prvSetupHardware();
printf("Hello World!\r\n");
xTaskCreate(Task1,"Task1",100,NULL,1,&xHandleTask1);
xTaskCreate(Task2,"Task2",100,NULL,1,&xHandleTask2);
xTaskCreateStatic(Task3,"Task3",100,NULL,1,xTask3Stack,&xTask3Tcb);
vTaskStartScheduler();
return 0;
}
输出结果:
可以看到,任务2执行一段时间(100次)后被删除,任务1After this, execute it for a while(共200次)之后被删除,After that, only the task remains3执行了.vTaskDelete();Functions can both delete dynamically created task functionsxTaskCreate创建的任务,It is also possible to delete statically created task functionsxTaskCreateStatic创建的任务.
对于xTaskCreate()We have already set the task handle of the task when we created it,You can directly pass it in when you delete it.
对于xTaskCreateStatic,我们可以从下图看到,The return value of this function is a task handle,So use a create structure to get the handle of the task in advance.
TaskHandle_t TaskStaticHandle = xTaskCreateStatic(Task3,"Task3",100,NULL,1,xTask3Stack,&xTask3Tcb);

边栏推荐
- 从幻核疑似裁撤看如何保证NFT的安全
- OpenFeign设置header的3种方式
- Distributed current limiting, hand & redisson implementation
- #夏日挑战赛#【FFH】OpenHarmony设备开发基础(三)编译依赖
- sql concat()函数
- Likou 209 - String with the Minimum Length - Sliding Window Method
- FreeRTOS创建任务--动态创建、静态创建
- 1.3 Rapid Spanning Tree Protocol RSTP
- JVM学习----垃圾回收调优
- np.nan, np.isnan, None, pd.isnull, pd.isna 整理与小结
猜你喜欢

php字符串的截取方式

Speed up your programs with bitwise operations

An example of type3 voltage loop compensator taking Boost as an example

网站自动翻译-网站批量自动翻译-网站免费翻译导出

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

DTG-SSOD: The latest semi-supervised detection framework, Dense Teacher (with paper download)

js真3d柱状图插件

MyCat2的介绍与安装以及基本使用

一款强大的js弹出alert插件

1.3快速生成树协议RSTP
随机推荐
MyCat2的介绍与安装以及基本使用
FreeRTOS--优先级实验
Seneor Exposure Basics
openresty 性能优化
以Boost为例的type3电压环补偿器实例
Hand rolled architecture, 41 Redis interview asked
SQL Server 数据库之生成与执行 SQL 脚本
力扣977-有序数组的平方——暴力法&双指针法
Create your own app applet ecosystem with applet containers
手撸架构,Mysql 面试126问
力扣27-移除元素——简单题
FreeRTOS--栈实验
MD5详解(校验文件完整性)
用位运算为你的程序加速
看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!
Pod Scheduling Strategy: Affinity, Stain and Stain Tolerance
Software component analysis: 5 major capabilities to protect software supply chain security
不错的射击类js小游戏源码
After Effects 教程,如何在 After Effects 中对蒙版进行动画绘制?
An example of type3 voltage loop compensator taking Boost as an example