FreeRTOS 任务的创建与删除

简介: FreeRTOS 任务的创建与删除

1. 什么是任务?

任务可以理解为进程/线程,创建一个任务,就会在内存开辟一个空间。


任务可以被认为是一组函数,它们在运行时相互协作以完成特定的目标。


在 FreeROTS 中,任务可以分配不同的优先级,并按照优先级进行调度。当一个任务没有工作可以做时,操作系统会将 CPU 时间分配给另一个优先级更高的任务,以确保系统的正常运行。


任务通常都含有 while(1) 死循环。


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

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

                               函数名称                                  函数作用
xTaskCreate() 动态方式创建任务
xTaskCreateStatic() 静态方式创建任务
vTaskDelete() 删除任务


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

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


xTaskCreate 函数原型

8092b04a65901e5c75df2262081e3080_d5b498f1a5fb4c438bce3f4c35bc8e85.png

1. pxTaskCode:指向任务函数的指针,任务必须实现为永不返回(即连续循环);


2. pcName:任务的名字,主要是用来调试,默认情况下最大长度是16;


3. pvParameters:指定的任务栈的大小;


4. uxPriority:任务优先级,数值越大,优先级越大;


5. pxCreatedTask:用于返回已创建任务的句柄可以被引用。

                 返回值                       描述                
pdPASS 任务创建成功
errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY 任务创建失败

vTaskDelete 函数原型

void vTaskDelete(TaskHandle_t xTaskToDelete);

只需将待删除的任务句柄传入该函数,即可将该任务删除。


当传入的参数为NULL,则代表删除任务自身(当前正在运行的任务)。


3. 创建两个任务进行点灯实操

使用CubeMX快速移植

将FreeRTOS移植到STM32F103C8T6,具体看我写过的文章FreeRTOS移植到STM32F103C8T6


1.增加两个任务

2.查看原理图,设置两个LED灯的引脚为输出引脚

3.导出代码后加入下面代码,编译烧录32单片机

打开freertos.c文件

void StartTaskLED1(void const * argument)
{
  for(;;)
  {
  HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
    osDelay(500);
  }
}
 
 
void StartTaskLED2(void const * argument)
{
  for(;;)
  {
  HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
    osDelay(1000);
  }
}
相关文章
|
7月前
|
存储 API
|
7月前
|
存储 数据采集 Windows
LabVIEW重入:允许同时调用同一子VI
LabVIEW重入:允许同时调用同一子VI
251 1
|
7月前
|
算法 Linux API
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取
86 0
【Linux系统编程】一文了解 Linux目录的创建和删除API 创建、删除与读取
|
7月前
|
移动开发
【FreeRTOS】事件组的使用
【FreeRTOS】事件组的使用
|
7月前
|
存储
FreeRTOS事件组
FreeRTOS事件组
61 0
|
7月前
|
API
FreeRTOS入门教程(队列详细使用示例)
FreeRTOS入门教程(队列详细使用示例)
256 0
|
7月前
|
存储
FreeRTOS入门教程(事件组概念和函数使用)
FreeRTOS入门教程(事件组概念和函数使用)
152 0
|
API 调度
FreeRTOS学习笔记—任务创建和删除
本文学习了如何创建和删除任务。最后,分析解决了遇到的问题。
193 0
创建第一个FreeRTOS任务
创建第一个FreeRTOS任务
95 1
|
测试技术 编译器 API
13-FreeRTOS任务创建与删除
13-FreeRTOS任务创建与删除