FreeRTOS之任务状态查询

news2025/2/1 15:39:31
 1、相关API函数的使用

uxTaskPriorityGet(Task1Task_Handler);//传入task1的任务句柄,获取任务优先级

 vTaskPrioritySet(Task1Task_Handler,30);//改变任务优先级

     task_num = uxTaskGetNumberOfTasks();//获取任务数量

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "FreeRTOS.h"
#include "task.h"
#include "sys.h"
/****************************************************
STM32F103C8T6单片机freertos移植实验
作者:KJX
时间:2023-12-22
*****************************************************/
//优先级
#define START_TASK_PRIO         1
//堆栈大小
#define START_STK_SIZE        128
//任务函数
void start_task(void * pvParameters);
//任务句柄
TaskHandle_t StartTask_Handler;

//task1优先级
#define TASK1_TASK_PRIO      	3
//task1堆栈大小
#define TASK1_STK_SIZE        128
//task1函数声明
void task1_task(void * pvParameters);
//task1任务句柄
TaskHandle_t  Task1Task_Handler;

//task2优先级
#define TASK2_TASK_PRIO      	2
//task2堆栈大小
#define TASK2_STK_SIZE        128
//task2函数声明
void task2_task(void * pvParameters);
//task2任务句柄
TaskHandle_t  Task2Task_Handler;

int main(void)
{
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
		delay_init();
		uart_init(9600);
		LED_Init();
		LED0=0;		
		xTaskCreate((TaskFunction_t )  start_task,     //指向任务函数的指针,必须为第一个
								(char *   			) "start_task",   //任务名字
								(uint16_t 			) START_STK_SIZE, //任务堆栈大小,字为单位
								(void *         	) NULL, 		  //传递给任务函数的参数
								(UBaseType_t    	) START_TASK_PRIO,//任务优先级,数值大,则优先级大
								(TaskHandle_t * 	) &StartTask_Handler);//任务句柄(控制块)									
		vTaskStartScheduler();//开启任务调度							
}

//开始任务
//返回值为pdPASS则创建任务成功
 void start_task(void * pvParameters)
{
	    taskENTER_CRITICAL();//进入临界区,创建任务完成后,才开始执行优先级任务
        //创建Task1
		xTaskCreate((TaskFunction_t ) task1_task,
								(char *   			) "task1_task",
								(uint16_t 			) TASK1_STK_SIZE,
								(void *         	) NULL,
								(UBaseType_t    	) TASK1_TASK_PRIO,
								(TaskHandle_t * 	) &Task1Task_Handler);
        //创建Task2
		xTaskCreate((TaskFunction_t ) task2_task,
								(char *   			) "task2_task",
								(uint16_t 			) TASK2_STK_SIZE,
								(void *         	) NULL,
								(UBaseType_t    	) TASK2_TASK_PRIO,
								(TaskHandle_t * 	) &Task2Task_Handler);
								
		vTaskDelete(StartTask_Handler);//删除开始任务,删除自身用NULL
		taskEXIT_CRITICAL();//退出临界区
}

//同等优先级情况下,开启时间片调度
//任务一
void task1_task(void * pvParameters)
{
	 while(1)
	 {
		LED0=LED0;
		vTaskDelay(500);
	 }
}

//任务二,实现任务状态查询
void task2_task(void * pvParameters)
{ 
	UBaseType_t priority_num = 0;
	UBaseType_t task_num = 0;
	priority_num = uxTaskPriorityGet(Task1Task_Handler);//传入task1的任务句柄,获取任务优先级
	printf("task1的任务优先级为%ld\r\n",priority_num);
	
	vTaskPrioritySet(Task1Task_Handler,30);//改变任务优先级
	priority_num = uxTaskPriorityGet(Task1Task_Handler);//再次传入task1的任务句柄,获取任务优先级
	printf("task1的任务优先级修改为%ld\r\n",priority_num);
	
	task_num = uxTaskGetNumberOfTasks();//获取任务数量
	printf("任务数量为: %ld\r\n",task_num);
	
	while(1)
	{
	    
		vTaskDelay(1000);
	}
}


任务数量为5,包括开始任务、task1、task2、(中断、定时器任务)

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

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

相关文章

【CF闯关练习】—— 900分段

🌏博客主页:PH_modest的博客主页 🚩当前专栏:cf闯关练习 💌其他专栏: 🔴每日一题 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓…

【Nacos】—客户端与服务端源码解析

Nacos系列 Nacos—简述、注册中心、配置中心 Nacos安装教程 SpringBoot项目与Nacos配置 一、背景介绍 Nacos(Naming and Configuration Service)是阿里巴巴开源的服务发现和配置管理工具,它是一个全面的微服务基础设施组件,提供…

微信小程序开发系列-02注册小程序

上一篇文章,创建了一个最小的小程序,但是,还有3个疑问没有弄清楚,还是基于demo1工程,这篇文章继续探索。 当前的目录结构是否是完备的呢?(虽然小程序可以运行起来)app.js文件内容还…

GrayLog日志平台的基本使用-收集系统日志

1、新建Indices 2、新建Input Inputs新增syslog UDP的类型,接收端口为1514 UDP 用于接收Linux服务器使用rsyslog转发过来的系统日志 Input配置后,需要开放端口:firewall-cmd --permanent --zonepublic --add-port1514/udp; firewall-cmd --r…

【开源工程及源码】超级经典开源项目实景三维数字孪生智慧机场

智慧机场可视化平台通过可视化手段,将复杂的机场运营数据以图形、图表等形式展现,使管理者能够更直观、实时地了解机场的各个方面。飞渡科技通过整合物联网IOT、人工智能、大数据分析等技术,围绕机场管理、运控、安防、服务、监测等业务领域&…

【Filament】绘制立方体

1 前言 本文主要介绍使用 Filament 绘制彩色立方体,读者如果对 Filament 不太熟悉,请回顾以下内容。 Filament环境搭建绘制三角形绘制矩形绘制圆形 2 绘制立方体 本文项目结构如下,完整代码资源 → Filament绘制立方体。 2.1 自定义基类 为…

智赋百景|2023-2024年福建省大数据集团数据应用开发大赛重磅开赛!

为推动数据要素赋能千行百业,拓展自然语言处理技术在不同业务场景下的落地应用,进一步实现“智赋百景”,由福建省大数据集团有限公司主办,福建大数据一级开发有限公司、福建大数据交易有限公司、福建省数字经济产业工会共同承办的…

【小白专用】php以pdo方式连接sqlserver,开启sqlsrv扩展

一、安装ODBC程序, 下载适用于 SQL Server 的 ODBC 驱动程序 - 适用于 SQL Server 的 ODBC 驱动程序 |Microsoft 学习 运行安装程序,出现如下图所示页面; 选择下一步;选择我同意许可协议中的条款后选择下一步; 点击安…

告别高昂存储,高效灵活管理数据

前言 在当今数字化时代,企业面临着海量数据的挑战,这些数据承载着技术创新和业务发展的重要使命。因此,高效、安全地收集、存储和管理数据成为了企业关注的焦点。对于需要长期储存且低频聚合分析的数据,组织需要更加低成本和便捷…

Android平台RTSP流如何添加动态水印后转推RTMP或轻量级RTSP服务

技术背景 我们在对接外部开发者的时候,遇到这样的技术诉求,客户用于地下管道检测场景,需要把摄像头的数据拉取过来,然后叠加上实时位置、施工单位、施工人员等信息,然后对外输出新的RTSP流,并本地录制一份…

Java中使用JTS实现WKB数据写入、转换字符串、读取

场景 Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角: Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内…

PlatEMO 源码执行的具体过程

ALGORITHM 类 Algorithm类定义在Algorithms文件夹下。在这个目录中,算法根据分类分成了三种: 多目标算法:Multi-objecitve optimization单目标算法:Single-objective optimization工具算法:Utility functions 工具算法…

系统架构设计师教程(九)软件可靠性基础知识

软件可靠性基础知识 9.1 软件可靠性基本概念9.1.1 软件可靠性定义9.1.2 软件可靠性的定量描述9.1.3 可靠性目标9.1.4 可靠性测试的意义9.1.5 广义的可靠性测试与狭义的可靠性测试 9.2 软件可靠性建模9.2.1 影响软件可靠性的因素9.2.2 软件可靠性的建模方法9.2.3 软件的可靠性模…

02 特征点提取器 ORBextractor

文章目录 02 特征点提取器 ORBextractor2.0 基础知识2.0.1 图像金字塔2.0.2 ORB 特征点的关键点和描述子 2.1 构造函数:ORBextractor()2.2 构建图像金字塔 ComputePyramid()2.3 提取特征点并筛选 ComputeKeyPointsOctTree()2.4 筛选特征点 DistributeOctTree()2.5 计…

C++实现布隆过滤器

目录 一、什么是布隆过滤器 二、布隆过滤器的映射 三、布隆过滤器的作用 四、布隆过滤器的实现 五、总结测试 一、什么是布隆过滤器 之前我们学习了位图,我们知道位图主要是实现了整形的映射bit位,这样可以大幅度的节省空间,那么针对于…

【笔记】Spring是什么

什么是spring&#xff1f; Spring的基础知识铺垫 IOC AOP<-Spring->容器->生态 先说你的认知&#xff0c;总-分结构 spring是一个基础的框架&#xff0c;同时提供了Bean的容器&#xff0c;用来方便装载具体的Bean对象&#xff0c;之前在使用对象的时候必须自己new&…

代码随想录第三十八天(一刷C语言)|零钱兑换II组合总数和 IV

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 一、零钱兑换II 思路&#xff1a;参考carl文档 1、确定dp数组以及下标的含义&#xff1a;凑成总金额j的货币组合数为dp[j]。 2、确定递推公式&#xff1a;dp[j] 就是所有的dp[j - coins[i…

中国ESG的新故事:主动、常态与变革

ESG的终局不仅仅是与业务的结合&#xff0c;而是需要将ESG 融入企业价值内核&#xff0c;实现社会价值与商业价值的深度融合&#xff0c;即有意义地盈利。 作者|斗斗 编辑|皮爷 出品|产业家 “到这里来吧&#xff0c;我将帮你们获得这个世界。我的文明已无力解决自己的…

微服务之配置中心与服务跟踪

zookeeper 配置中心 实现的架构图如下所示&#xff0c;采取数据加载到内存方式解决高效获取的问题&#xff0c;借助 zookeeper 的节点监听机制来实现实时感知。 配置中心数据分类 事件调度&#xff08;kafka&#xff09; 消息服务和事件的统一调度&#xff0c;常用用 kafka …

pytorch张量的创建

张量的创建 张量&#xff08;Tensors&#xff09;类似于NumPy的ndarrays &#xff0c;但张量可以在GPU上进行计算。从本质上来说&#xff0c;PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。 import torch import numpy torch.manual_seed(7) # 固…