FreeRTOS之任务状态查询

 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();//进入临界区,创建任务完成后,才开始执行优先级任务//创建Task1xTaskCreate((TaskFunction_t ) task1_task,(char *   			) "task1_task",(uint16_t 			) TASK1_STK_SIZE,(void *         	) NULL,(UBaseType_t    	) TASK1_TASK_PRIO,(TaskHandle_t * 	) &Task1Task_Handler);//创建Task2xTaskCreate((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);//删除开始任务,删除自身用NULLtaskEXIT_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.mzph.cn/news/238493.shtml

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

相关文章

chatgpt的apikey(openai apikey)如何获取

话不多说,上链接 https://platform.openai.com/api-keys

mysql SQL执行超时问题

show variables like max_execution_time 使用这个命令查看了,没有设置sql执行超时时间,那么大概率问题就出在阿里的Druid数据库连接池出了问题 尝试着socketTimeout由60000毫秒改成10000毫秒,果然执行了十几秒就超时报错了 socketTime…

做软件开发,谨防天上掉馅饼

今天来讲讲普通人眼里的软件开发。 我是一家软件开发公司的部门负责人,专注软件开发五年。经我手过的客户也有个百八十。有时候真的挺纳闷的,有些人准备话几百块甚至不到一千块就想做个系统,到底是怎么想的咱也不清楚。 就简单的说现在招两个…

BWS2000倾角传感器c++测试代码_时间延迟与时间同步问题【3】

详见昨天做的测试代码,代码网址:BWS2000倾角传感器c测试代码【2】-CSDN博客文章浏览阅读268次,点赞7次,收藏8次。倾角传感器测试与编写思路https://blog.csdn.net/m0_47489229/article/details/135128748 问题一:新的…

NVIDIA NCCL 源码学习(十二)- double binary tree

上节我们以ring allreduce为例看到了集合通信的过程,但是随着训练任务中使用的gpu个数的扩展,ring allreduce的延迟会线性增长,为了解决这个问题,NCCL引入了tree算法,即double binary tree。 double binary tree 朴素…

windows 动态库和静态库 介绍

在Windows平台上,动态库和静态库都是用于组织和共享代码的方式。这些库文件的扩展名和用途有一些区别。 1. 静态库和动态库 静态库(Static Library): 文件扩展名:.lib在编译链接时,静态库的代码被直接嵌入…

八:爬虫-MySQL基础

一:MySQL数据库基础 1.MySQL数据库介绍 MySQL是一个[关系型数据库管理系统],由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Rela…

数据结构 | 北京大学期末试卷查漏补缺

目录 顺序存储 优点 缺点 适用于: 链式存储 优点 缺点 适用于: 折半查找为什么要使用顺序存储结构 树的存储结构​编辑 对于一个数据结构,一般包括 DFS&BFS 什么是递归程序 C语言不带头结点的单链表逆置 检测字符…

cmake学习【list】

cmake之list 在CMake中,list命令用于处理列表(Lists)。下面是一些常用的list命令的参数和示例: list(APPEND listName element1 [element2 ...]): 向列表末尾添加元素。 set(myList 1 2 3) list(APPEND myList 4 5) message(STAT…

window10下载与安装Dubbo Admin,图文说明

0,前言 在学习这篇文章之前,可以先把zookeeper安装一下 安装教程指路:window10下载与安装zookeeper,图文说明 1,下载 拉取代码,一般教程都会让我去github官网拉取,但是因为该网站经常打不开…

如何在小程序中添加字符

随着移动互联网的普及,微信小程序已经成为众多商家的首选。通过微信小程序,商家可以展示产品、服务和品牌形象。那么如何在微信小程序中添加视频内容呢?本文将详细介绍操作步骤。 首先,商家需要登录乔拓云平台,进入门店…

MongoDB 单机安装部署

文章目录 说明1. 下载安装包2. 安装数据库3. 配置 systemctl4. 创建 root 用户 说明 本篇文章介绍 MongoDB 二进制安装的步骤,整个过程还是比较简单。 1. 下载安装包 进入 MongoDB 官网,获取安装包的下载链接: https://www.mongodb.com/tr…

安全运维是做什么的,主要工作内容是什么

安全运维,简称SecOps,是一种集成安全措施和流程到信息技术运维的实践。它的目的是确保在日常运维活动中,如网络管理、系统维护、软件更新等,均考虑并融入安全策略。安全运维的核心是实现安全和运维团队的密切协作,以快…

【自动化测试】selenium元素定位方式大全!

前言 当我们在使用selenium进行自动化测试工作时,元素定位是非常重要的一环,因为我们是借助脚本模拟我们通过鼠标和键盘对元素进行点击、输入内容和滑动操作的,所以准确的元素定位是我们执行测试脚本的重要一环。本文就来给大家介绍一下sele…

[调试]stm32使用过程debug记录,持续更新ing

遇到的bug:无法在串口助手接收到stm32向主机输出的数据,串口-USB RX灯不闪烁; 分析:闪烁灯实际上为一个二极管,CH 插入电脑USB接口时,RX处于高电平,当数据传输时,拉低电平导致其闪烁…

竞赛保研 基于CNN实现谣言检测 - python 深度学习 机器学习

文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于CNN实现谣言检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&am…

百分比-保留2位小数

有时候工作中有这样的需求,统计各种类型的占比,因此记录一下求百分比的小工具,以后方便自己用到随时来查 /*** 转成百分数* 当前数除以总数* param num1-当前数 ,num2-总数 num1/num2* return rate 保留2位小数的*/public static String …

4.使用 Blazor 构建 Web 应用程序

微软官方培训 了解如何通过 Blazor Web 用户界面框架构建你的第一个 Web 应用程序。 https://learn.microsoft.com/zh-cn/training/paths/build-web-apps-with-blazor/?viewaspnetcore-8.0 8个模块 目录 微软官方培训 1.使用 Blazor 进行 Web 开发的简介 2.使用 Blazor…

MySQL中已经有了Binlog,为啥还要有Redo Log

参考文章 MySQL中的Binlog和Redo Log虽然都与事务的持久性和可恢复性有关,但它们服务于不同的目的和场景,并且在MySQL的架构中扮演着互补的角色。 Redo Log: 目的:Redo Log 主要用于保证InnoDB存储引擎的事务持久性。它确保在系…

Vue中为什么data属性是一个函数而不是一个对象?(看完就会了)

文章目录 一、实例和组件定义data的区别二、组件data定义函数与对象的区别三、原理分析四、结论 一、实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象,也可以是一个函数 const app new Vue({el:"#app",// 对象格式data:{foo:&quo…