STM32之任务的创建与删除

news2024/11/24 6:40:57

目录

1. 什么是任务?

2. 任务创建与删除相关函数

任务动态创建与静态创建的区别:

 xTaskCreate 函数原型

官方案例: 

 vTaskDelete 函数原型

3. 实操


1. 什么是任务?

任务可以理解为进程 / 线程,创建一个任务,就会在内存开辟一个空间。
比如:
玩游戏、陪女朋友,都可以视为任务
Windows 系统中的 MarkText 、谷歌浏览器、记事本,都是任务。
任务通常都含有 while(1) 死循环。

2. 任务创建与删除相关函数

任务创建与删除相关函数有如下三个:

任务动态创建与静态创建的区别:

动态创建任务的堆栈由系统分配,而静态创建任务的堆栈由用户自己传递。
通常情况下使用动态方式创建任务。

 xTaskCreate 函数原型

1. pvTaskCode :指向任务函数的指针,任务必须实现为永不返回(即连续循环);
2. pcName :任务的名字,主要是用来调试,默认情况下最大长度是 16
3. pvParameters :指定的任务栈的大小;
4. uxPriority :任务优先级, 数值越大,优先级越大
5. pxCreatedTask :用于返回已创建任务的句柄可以被引用。

 

 

官方案例: 

/* Task to be created. */
void vTaskCode( void * pvParameters )
{
    /* The parameter value is expected to be 1 as 1 is passed in the
    pvParameters value in the call to xTaskCreate() below.
    configASSERT( ( ( uint32_t ) pvParameters ) == 1 );
    for( ;; )
    {
    /* Task code goes here. */
    }
}
/* Function that creates a task. */
void vOtherFunction( void )
{
    BaseType_t xReturned;
    TaskHandle_t xHandle = NULL;
    /* Create the task, storing the handle. */
    xReturned = xTaskCreate(
        vTaskCode, /* Function that implements the task. */
        "NAME", /* Text name for the task. */
        STACK_SIZE, /* Stack size in words, not bytes. */
        ( void * ) 1, /* Parameter passed into the task. */
        tskIDLE_PRIORITY,/* Priority at which the task is created. */
        &xHandle ); /* Used to pass out the created task's handle. */
    if( xReturned == pdPASS )
    {
        /* The task was created. Use the task's handle to delete the task. */
        vTaskDelete( xHandle );
    }    
}

 vTaskDelete 函数原型

void vTaskDelete(TaskHandle_t xTaskToDelete);

只需将待删除的任务句柄传入该函数,即可将该任务删除。
当传入的参数为 NULL ,则代表删除任务自身(当前正在运行的任务)。

3. 实操

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/599867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【生物力学】《人体骨肌系统生物力学》- 王成焘老师 - 第2章 - 人体几何学测量与仿真建模

第1章回到目录第3章 文章目录 2.1 概论2.2 人体几何学测量2.2.1 人体外部几何形态2.2.2 人体尺寸测量与统计处理2.2.3 中国人体尺寸标准统计测量数据2.2.4 人体各部位比例及人体间尺寸换算2.2.5 人体活动范围测量 2.3 人体骨肌系统三维几何建模的数据来源2.3.1 冷冻切片数字摄像…

“微商城”项目(2准备工作)

一.安装Node.js 本项目使用Vue.js前端框架进行开发,在创建项目之前需要先下载Node.js环境。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它可以让JavaScript运行在服务器端。接下来对Node.js的下载和安装进行详细讲解。 打开Node.js官方网站&a…

RabbitMQ高频面试题

RabbitMQ的使用场景 异步发送消息(验证码、短信、邮件…)mysql、redis、es之间的数据同步分布式事务削峰填谷… 面试题:RabbitMQ如何保证消息不丢失 消息丢失原因 生产者发送的消息未到达交换机交换机未把消息路由到队列mq服务器宕机&…

辅助驾驶功能开发-功能算法篇(1)-ACC-多目标选择

1、总体架构 2、漏斗概念(Funnel) 路径漏斗是围绕着自车预测轨迹的一片区域。换言之,漏斗的中心应该根据预测的轨迹方向相应的弯曲。 2.1、普通&略宽漏斗(Normal Funnel & Wider Funnel) 普通漏斗用于选择路径中最近的目标车辆A和次近的车辆B。 更宽的漏斗用于选择…

@SentinelResource和openFeign+sentinel 对远程调用熔断降级加规则持久化的具体实 现

SentinelResource 自定义全局限流处理类 需求分析/图解 先看前面的一段代码 这个就是上面的Sentinel 热点规则 注意看我们的限制处理方法在本类中代码的耦合度高 阅读性差 不利于程序的扩展 SentinelResource的作用就是解决这个需求将处理方法放到一个类中 GetMapping("…

Docker从入门到会搭建一个简单的系统

一、环境准备 1、查看Llinux的版本 [rootlocalhost ~]# cat /etc/redhat-release 2、关闭防火墙 [rootlocalhost ~]# systemctl stop firewalld.service 3、设置开机不启动防火墙 [rootlocalhost ~]# systemctl disable firewalld.service 二、Docker的安装 1、Docker是中高…

单片机GD32F303RCT6 (Macos环境)开发 (三十二)—— GD32 SPI主从实验 中断模式

GD32 SPI主从实验 中断模式 1、接线 SPI0 PA4 PA5 PA6 PA7SPI1 PB12 PB14 PB14 PB15采用全双工模式SPI0 SPI1CS PA4----------------PB12CLK PA5----------------PB13MISO PA6----------------PB14MOSI PA7----------------PB152、spi0 主设…

chatgpt赋能python:Python简单游戏开发入门

Python简单游戏开发入门 Python作为一门流行的编程语言,可以用来开发各种各样的应用,包括游戏。虽然Python不是游戏开发的主流语言,但我们可以用它来制作一些简单而有趣的游戏。在这篇文章中,我们将介绍如何用Python创建一个简单…

批量剪辑视频工具源码开发搭建分享

搭建步骤 1. 首先需要根据自身产品确定视频类型及需要实现的视频效果 2. 根据预期视频效果选择视频上传模式,并将视频素材进行上传 3. 添加音频、字幕,标题等与素材进行组合。 4. 设置投放计划,包括:视频标题、视频话题等 5.…

Are Emergent Abilities of Large Language Models a Mirage?

Paper name Are Emergent Abilities of Large Language Models a Mirage? Paper Reading Note Paper URL: https://arxiv.org/pdf/2304.15004.pdf Video URL: https://www.youtube.com/watch?vhZspGdApDIo TL;DR 2023 年斯坦福的研究,探索大语言模型表现出涌…

LeetCode 1552. Magnetic Force Between Two Balls【二分,排序,贪心】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

内存栈与CPU栈机制

1. 内存栈: 先入后出,LIFO(LAST IN FIRST OUT) 入栈:将一个新的元素放到栈顶 出栈:从栈顶取出一个元素 栈顶元素总是最后一个入栈,需要时出栈. 2.CPU栈机制 8086CPU提供相关指令以栈方式来访问内存空间.相当于将一段内存当做栈来使用 8086CPU提供的入栈指令为:PUSH ,出栈指令为…

【Linux】序列化和反序列化

目录 🌈前言🌸1、应用层🌺2、重谈协议🍁3、网络计算器🍡3.1、定制协议🍢3.2、样例代码 🌈前言 这篇文章给大家带来序列化和反序列化的学习!!! 🌸…

chatgpt赋能python:Python倒序for:如何优化循环遍历

Python倒序for:如何优化循环遍历 Python作为一门高级编程语言,一直以来都在开发者中得到广泛的应用。在日常的编程工作中,遍历列表(List)和元组(Tuple)是很常见的操作。而对于列表或元组的倒序…

NLP(五十四)tiktoken的使用

tiktoken是OpenAI于近期开源的Python第三方模块,该模块主要实现了tokenizer的BPE(Byte pair encoding)算法,并对运行性能做了极大的优化。本文将介绍tiktoken模块的使用。 tiktoken简介 BPE(Byte pair encoding)算法是NLP中常见的…

Redis系列---Redis网络模型1

我们都知道,redis的高性能是具有多方面的因数,如:运行在内存上,单线程命令,io多路复用技术等,对于redis高性能的探究,就需要深入的研究其工作原理,这就涉及到redis的网络模型了&…

python实现单链表、双链表、反转链表(二)

一、链表概述 链表是有元素组成的数据结构,每个元素都是单独对象,包含数据和指针信息 链表中的每个元素称为节点,如下所示,第一个节点称为Head(头节点),为链表的入口点,如果链表为空,则Head指…

Vue.js 比较重要知识点总结二

概述 vue3 组合式API生命周期钩子函数有变化吗?Composition API 与 Options API 有什么区别?watch 和 watchEffect 的区别?vue2 如何升级到 vue3 ? vue3 组合式API生命周期钩子函数有变化吗? 选项式API 和 组合式API 生命周期…

Java的继承性

1.为什么要有类的继承性?(继承性的好处) ① 减少了代码的冗余,提高了代码的复用性② 便于功能的扩展③ 为之后多态性的使用,提供了前提 2.子类继承父类以后有哪些不同? 2.1体现: 一旦子类A继承父类B以…

汇编基础学习

1. 利用ldr向寄存器里面写较大数据,和设置寄存器的某些位 2. 这个lable 不对呢 验证宏值加载到寄存器里是正确的。 pc 的地址是0x80594 当前pc指针加上宏定义值的地址值。 3 打印字符串 字符串加载了8个字节到寄存器里面, 如何调试打印出来呢&#xff1…