当前位置: 首页 > news >正文

52Hz——FreeRTOS学习笔记——删除任务

主要API

xTaskDelete

INCLUDE_vTaskDelete 必须定义为 1,才可使用此函数。

总结

参数

  • xTaskToDelete: 要删除的任务的句柄。如果传递 NULL,则删除调用此函数的任务自身。

功能描述

  • 删除一个任务,并将其从所有内部列表(就绪列表、阻塞列表、挂起列表等)中移除。

  • 被删除任务的内存(包括任务控制块 TCB 和任务栈)需要被释放。如果任务是由 xTaskCreate() 动态创建的,那么内核会在删除任务时自动释放内存。如果任务是由 xTaskCreateStatic() 静态创建的,则不会自动释放内存,需要用户自行管理。

  • 删除任务时,会调用任务的清除钩子函数(如果设置了的话),然后释放内存。

案例

#include "MyTask.h"typedef enum
{TASK_PRIORITY_0,TASK_PRIORITY_1,TASK_PRIORITY_2,TASK_PRIORITY_3,TASK_PRIORITY_4
} Task_Priority_t;void LED1_Task(void *pvParameters);
TaskHandle_t led1_task_handle;
#define LED1_TASK_NAME "LED1_Task"
#define LED1_TASK_STACK_DEPTH 128void LED2_Task(void *pvParameters);
TaskHandle_t led2_task_handle;
#define LED2_TASK_NAME "LED2_Task"
#define LED2_TASK_STACK_DEPTH 128void LED3_Task(void *pvParameters);
TaskHandle_t led3_task_handle;
#define LED3_TASK_NAME "LED3_Task"
#define LED3_TASK_STACK_DEPTH 128void KEY_Task(void *pvParameters);
TaskHandle_t KEY_task_handle;
#define KEY_TASK_NAME "KEY_Task"
#define KEY_TASK_STACK_DEPTH 128void Init_Task(void *pvParameters);
TaskHandle_t Init_task_handle;
#define Init_TASK_NAME "Init_Task"
#define Init_TASK_STACK_DEPTH 128void MyTask_Start_Work(void)
{// 1. 创建任务xTaskCreate(Init_Task, Init_TASK_NAME, Init_TASK_STACK_DEPTH, NULL, TASK_PRIORITY_4, &Init_task_handle);// 2. 开启调度器vTaskStartScheduler();
}void LED1_Task(void *pvParameters)
{while (1){Int_LED_Toggle(LED1_GPIO_Port, LED1_Pin);vTaskDelay(1000);}
}void LED2_Task(void *pvParameters)
{while (1){Int_LED_Toggle(LED2_GPIO_Port, LED2_Pin);vTaskDelay(1000);}
}void LED3_Task(void *pvParameters)
{while (1){Int_LED_Toggle(LED3_GPIO_Port, LED3_Pin);vTaskDelay(1000);}
}void KEY_Task(void *pvParameters)
{while (1){Key_Type KEY = Int_Key_Scan();switch (KEY){case KEY1:vTaskDelete(led1_task_handle);break;case KEY2:vTaskDelete(led2_task_handle);break;case KEY3:vTaskDelete(led3_task_handle);break;default:break;}}
}void Init_Task(void *pvParameters)
{xTaskCreate(LED1_Task, LED1_TASK_NAME, LED1_TASK_STACK_DEPTH, NULL, TASK_PRIORITY_4, &led1_task_handle);xTaskCreate(LED2_Task, LED2_TASK_NAME, LED2_TASK_STACK_DEPTH, NULL, TASK_PRIORITY_4, &led2_task_handle);xTaskCreate(LED3_Task, LED3_TASK_NAME, LED3_TASK_STACK_DEPTH, NULL, TASK_PRIORITY_4, &led3_task_handle);xTaskCreate(KEY_Task, KEY_TASK_NAME, KEY_TASK_STACK_DEPTH, NULL, TASK_PRIORITY_4, &KEY_task_handle);/* 一次性任务,执行完以后要自行删除 */vTaskDelete(NULL);
}

http://www.dtcms.com/a/399439.html

相关文章:

  • AI 重塑教育生态:从个性化学习到公平鸿沟
  • 将二级域名 网站目录网站首页排名下降
  • 实现Word文档自动编号提取技术详解
  • 超越OCR:深入智能文档处理(IDP)的技术内核与实现路径
  • 江苏自助建站平台html5游戏开发
  • SQL server 2022下载安装详细教程
  • 工业视觉缺陷检测算法总结:从传统到深度学习,5类核心算法
  • 建设银行网站打不开别的网站可以口碑好的移动网站建设
  • 网站怎么建设原始站点定制网站的好处有哪些
  • 推动商用车辆原始设备制造商(OEM)向集中式电子电气架构(E/E,Electrical/Electronic)与软件架构转型
  • 网站内页模板玉溪市住房城乡建设局网站
  • Navicat 数据库管理工具简介​以及免费绿色版下载安装包分享 不登录csdn也可以直接使用
  • 第二章:Qt第一个程序
  • APache shiro-550 CVE-2016-4437复现
  • 计算机视觉笔试选择题:题组2
  • 荣耀手机商城官方网站入口唐山网页设计
  • 凉山西昌网站建设网站公司可以做英文网吗
  • 软件开发转测试的过程中, UT测试如何体现
  • Si掺杂AlN薄膜在肖特基中的应用
  • 四种Linux进程管理工具使用详解
  • 软件的自动化测试平台
  • 分享天气预报走势图和未来7日预报静态HTML
  • 如何建立国际网站网站建设现状调查研究
  • JVM(六)-- StringTable
  • SpringBoot面试
  • 网站建设技术课程设计报告保定市网站制作公司
  • 如何处理JavaScript渲染的登录页面?Selenium自动化登录指南
  • 知识图谱对自然语言处理中深层语义分析的影响与启示
  • 齐齐哈尔企业网站排名优化网站建设设计制作熊掌号
  • 52Hz——FreeRTOS学习笔记——调度器的挂起与恢复