(1)freertos任务管理

目录

一、简述

二、基本概念

1、任务状态

2、任务优先级

3、任务函数原型

三、任务管理函数

1、创建任务函数

2、任务挂起和恢复

3、其他基本函数功能简介


 

freertos官方网站https://freertos.org/ 可获取相关文档和引导

一、简述

任务的调度管理是os的核心功能,使用rtos先从任务调度入手

二、基本概念

1、任务状态

freertos共有四种任务状态,运行Running、就绪Ready、阻塞Blocked、暂停Suspended,就是说在某一时刻的某一个任务处于其中一个状态,任务状态切换如下(摘自文档)。

2、任务优先级

每个任务的优先级从0到(configMAX_PRIORITIES-1),其中configMAX_PRIORITIES在FreeRTOSConfig.h中定义。数值越小优先级越低

3、任务函数原型

当创建任务时,任务函数的函数名会作为创建函数的参数,所以任务函数有一个统一的定义类型,定义如下

/// Entry point of a thread.
typedef void (*osThreadFunc_t) (void *argument);


/*任务函数格式示例*/
void vATaskFunction( void *pvParameters )
{
    for( ;; )
    {
        -- 任务功能在此处编码 --

         vTaskDelay(10);   //系统延时、进行任务调度
    }

    vTaskDelete( NULL );
}

三、任务管理函数

1、创建任务函数

①xTaskCreate()        //动态创建任务,需要有内存管理,自动分配任务栈空间。

②xTaskCreateStatic()  //静态创建任务,编译时创建,手动提供任务栈空间。

③ xTaskCreateRestricted()  //创建一个受保护的任务,需要内存管理单元(MPU),一般单片机没有mpu。

函数参数说明在函数的声明处

用法:xTaskCreate() 和xTaskCreateStatic()形参区别

函数名     

xTaskCreate()xTaskCreateStatic()
形参

TaskHandle_t *pxCreatedTask

创建的任务的句柄。

 StackType_t * const puxStackBuffer, 

  任务栈地址。

StaticTask_t * const pxTaskBuffer

任务控制块地址。

因为是静态的,所以这两部分使用的空间需要手动创建。

  

 

 

注:xTaskCreateStatic()的返回值是任务的句柄。

2、任务挂起和恢复

  • vTaskResume()    //恢复任务,参数为任务句柄。
  • xTaskResumeAll() //恢复全部任务
  • xTaskResumeFromISR()    //在中断内恢复任务
  • vTaskSuspend()  //挂起暂停任务

3、其他基本函数功能简介

 

函数名功能
xTaskAbortDelay()取消任务阻塞态,转为就绪态
 xTaskCheckForTimeOut() 检查阻塞时间不超过设定的最大时间值
 vTaskDelay() 延时
 vTaskDelayUntil()绝对延时
 vTaskDelete()删除任务
 taskDISABLE_INTERRUPTS()关闭中断
taskENABLE_INTERRUPTS()打开中断
 taskENTER_CRITICAL进入临界区
 taskEXIT_CRITICAL()退出临界区
taskENTER_CRITICAL_FROM_ISR() 在中断中进入临界区
taskEXIT_CRITICAL_FROM_ISR() 在中断中退出临界区
xTaskGetApplicationTaskTag()获取任务标签值
 xTaskGetCurrentTaskHandle()获取当前任务句柄
xTaskGetIdleTaskHandle()获取空闲任务句柄
 xTaskGetHandle() 根据任务名获取句柄
  
  
  
  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值