FreeRtos学习笔记-------------用动态方法创建和删除任务_Invinciblenuonuo的博客-程序员宅基地

技术标签: stm32  STM32  freertos  嵌入式  

FreeRtos动态方法创建删除任务

利用函数xTaskCreate

/*任务创建函数*/
xTaskCreate( TaskFunction_t pxTaskCode,
                const char * const pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
                const configSTACK_DEPTH_TYPE usStackDepth,
                void * const pvParameters,
                UBaseType_t uxPriority,
                TaskHandle_t * const pxCreatedTask );
/*任务函数*/
void NAME_OF_YOUR_Task()
{
    
//任务一般为死循环程序
}
                

其中
pxTaskCode 为任务函数名称
pcName 双引号加名称
configSTACK_DEPTH_TYPE usStackDepth 为堆栈大小
pvParameters 为参数
uxPriority 为优先级
pxCreatedTask 任务句柄

创建任务时要注意 利用强制类型转换来避免数据类型出错
xTaskCreate(    (TaskFunction_t) pxTaskCode,
                (const char *) pcName, /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
                (uint16_t) usStackDepth,
                (void * ) pvParameters,
                (UBaseType_t) uxPriority,
                (TaskHandle_t *) pxCreatedTask );
               

/*用一个开始任务来创建两个任务使PG1和PG8两个LED以不同频率闪烁*/
#define START_TASK_DEPTH    120
#define START_TASK_PRIO      1

#define TASK_1_DEPTH    120    //堆栈
#define TASK_1_PRIO      3 //优先级


#define TASK_2_DEPTH    120    //堆栈
#define TASK_2_PRIO      2 //优先级


TaskHandle_t START_TASK_Handle;
TaskHandle_t TASK_1_Handle;
TaskHandle_t TASK_2_Handle;

void Start_Task( void * pvParameters)
{
    
	xTaskCreate( (TaskFunction_t) Task_1,
                (const char *)  "Task_1", /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
                (uint16_t) TASK_1_DEPTH,
                (void *) NULL,
                (UBaseType_t) TASK_1_PRIO,
                (TaskHandle_t *) &TASK_1_Handle );
								

		
	xTaskCreate( (TaskFunction_t) Task_2,
                (const char *)  "Task_2", /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
                (uint16_t) TASK_2_DEPTH,
                (void *) NULL,
                (UBaseType_t) TASK_2_PRIO,
                (TaskHandle_t *) &TASK_2_Handle );
							
								
								
								
			    vTaskDelete(START_TASK_Handle); //NULL表示删除自身也可以
					

								
}


void Task_1( void * pvParameters)
{
    
	while(1)
	{
    
	vTaskDelay(300);
	GPIO_ResetBits(GPIOG,GPIO_Pin_1 );
  vTaskDelay(300);
	GPIO_SetBits(GPIOG,GPIO_Pin_1 );
	
	}
}

void Task_2( void * pvParameters)
{
    
	while(1)
	{
    
	vTaskDelay(100);
	GPIO_ResetBits(GPIOG,GPIO_Pin_8 );
	vTaskDelay(100);
	GPIO_SetBits(GPIOG,GPIO_Pin_8 );
	}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_46451722/article/details/112958540

智能推荐

CS229《机器学习》笔记 | 多元高斯分布的边缘分布和条件分布_多维高斯分布的条件分布-程序员宅基地

文章浏览阅读8k次,点赞14次,收藏54次。吴恩达的《机器学习(CS229)》Lecture note 9(Part X Factor analysis)中提及了多元高斯分布的边缘分布和条件分布,指出这两者本身亦是高斯分布,但没有给出详细的证明。我自己尝试着推导,但不得要领,直到上网搜索后才恍然大悟。现将该证明过程记录于此,关键在于对协方差矩阵进行LDU分解。边缘分布一个多元概率分布的部分元所服从的概率分布即边缘分布,通过将剩余元求..._多维高斯分布的条件分布

尾调用优化 java_为什么JVM仍然不支持尾调用优化?-程序员宅基地

文章浏览阅读90次。拉丁的传说也许您已经知道这一点,但是这个功能并不像听起来那么简单,因为Java语言实际上将堆栈跟踪暴露给程序员。考虑以下程序:publicclassTest{publicstaticStringf(){Strings=Math.random()>.5?f():g();returns;}publicst...

1.opencv人脸检测_/opencv_face_process.cpp.o: in function `face_reco-程序员宅基地

文章浏览阅读166次。opencv使用visual Studio开发。首先搭建工程。1,人脸检测 (只适合静态图像的检测)2,人脸跟踪(适合视频流检测人脸)打开摄像头CMakeLists.txt# CMakeList.txt: Opencv_Face 的 CMake 项目,在此处包括源代码并定义# 项目特定的逻辑。#cmake_minimum_required (VERSION 3.8)inc..._/opencv_face_process.cpp.o: in function `face_recogn::face_recogn_init()

.NET理解——追求一种广泛的使用_.net广泛应用-程序员宅基地

文章浏览阅读1.2k次。最近看完了vb.net的视频,深感微软公司的强悍,也许它不是某个领域的试水者,但是它能先人一步看到未来,创造者固然伟大,但是看到某个创造的未来,并实现的人才是伟人! 跨平台,通用代码,中间代码,面向对象,这一切放到vb.net身上都很贴切,我还没有学习java,在这里只是谈谈现在我所认识的vb.net! 认识某种语言的好处,并不能根据现在来说,说他必然要放到历史_.net广泛应用

androidStudio5.0 自定义Plugin_android studio怎么修改plugin-程序员宅基地

文章浏览阅读322次。首先工程中新建一个Android Module项目,类型选择Android Library删除libs、src/androidTest、src/test、src/main下所有的目录,在src/main下新建groovy 和resources/META-INF/gradle-plugins目录修改build.gradle文件apply plugin: 'groovy'app..._android studio怎么修改plugin

制度汇编格式怎么生成目录_Markdown语法:表示目录文件结构,方法汇总-程序员宅基地

文章浏览阅读702次。Markdown如何表示目录结构?我需要在博客文章中表示文件目录的结构,Markdown是否有语法支持整洁的输出方式?例如,在Jekyll网站上可以看到at this link,目录&文件结构在页面上非常整齐地输出:.├── _config.yml├── _drafts| ├── begin-with-the-crazy-ideas.textile| └── on-simplici..._markdown表示文件结构

随便推点

bitmap工具类(读取、存入、裁剪、压缩等);-程序员宅基地

文章浏览阅读1k次。public class BitmapUtil { /** * 读取本地资源的图片 * * @param context * @param resId * @return */ public static Bitmap ReadBitmapById(Context context, int resId) { BitmapFactory.Optio

Ubuntu下环境变量该写进哪个文件里-程序员宅基地

文章浏览阅读2.8k次。(以Ubuntu10.04,bash shell为准)在linux下设定环境变量时,如果只是临时用一下,可以直接在shell下用set或export命令设定环境变量,如果希望此环境变量每次开机或打开shell时自动设定而无须每次都手动设定,那么需要将export命令写入某个系统文件中,拥有这种功能的文件常见的有如下几个:/etc/environment 或 /etc/profile 或 ~

ioctl()函数获取本机IP、MAC_ioctl(sock, siocgifhwaddr, &ifr)-程序员宅基地

文章浏览阅读409次。#include <sys/ioctl.h>int ioctl(int d, int request, ...);/* Socket configuration controls. */#define SIOCGIFADDR 0x8915 /* get PA address */#define SIOCSIFADDR 0x8916 /* set PA address */#define SIOCGIFHWADDR 0x8927 /* Get hardware addre..._ioctl(sock, siocgifhwaddr, &ifr)

RN 使用热更新_hippy 热更新-程序员宅基地

文章浏览阅读1.6k次。对于RN项目的热更新以及本地环境配置步骤,请参考下面链接(步骤很详细,感谢作者): 链接_1: https://www.jianshu.com/p/117399ba4795链接_2: https://github.com/reactnativecn/react-native-pushy/blob/master/docs/guide.md问题: 在上传过离线版本后,在pushy 网站上传ipa包前 ..._hippy 热更新

华科计算机学硕需要读几年,本人现在双非大四 推免留校读研学硕 想三年后考华科的博士 - 考博 - 小木虫 - 学术 科研 互动社区...-程序员宅基地

文章浏览阅读289次。本人现在双非大四 推免留校读研学硕 想三年后考华科的博士 有些纠结与困惑还望各位师兄师姐指点先简单自我介绍下本人目前大四大一大二的职业生涯规划都是大学毕业了直接就业成绩一般大三时由于种种原因改变读研又由于母校虽然是双非但还是具有推免资格的于是往推免方向努力大三的暑假参加了五六个竞赛 也发表了三篇文章(一篇核心导师给的 两篇普刊因为自己学校普刊也加分,就把电赛还有西门子的报告改...

第七周 项目三:第九章知识点思维导图-程序员宅基地

文章浏览阅读663次。使用心得:分层次记忆知识点~没使用插画,改变了颜色不知道好不好嘞~