03_FreeRTOS任务控制

FreeRTOS任务控制

1、相对延时函数

1.1、函数描述

void vTaskDelay( const TickType_t xTicksToDelay )

调用vTaskDelay后,任务进入阻塞状态,持续时间由 xTicksToDelay 指定,单位是系统节拍时钟周期。宏 portTICK_PERIOD_MS 用来辅助计算时间。vTaskDelay指定的延时时间是从调用vTaskDelay后开始计算的相对时间。

1.2、参数描述

xTicksToDelay — 延时时间,单位是系统节拍周期。

2、绝对延时函数

2.1、函数描述

void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement )

任务延时一个指定的时间。周期性任务可以使用此函数,以确保一个恒定的频率执行。该函数和vTaskDelay的区别在于:vTaskDelay指定的延时时间是从调用函数后开始计算,但vTaskDelayUntil是一个绝对时间。当调用vTaskSuspendAll函数挂起RTOS调度器时,不可以使用此函数。

2.2、参数描述

pxPreviousWakeTime—指向一个变量,该变量保存任务最后一次解除阻塞的时间。第一次使用时,该变量必须初始化为当前时间,之后这个变量会在vTaskDelayUntil函数内自动更新。

xTimeIncrement—周期循环时间,当时间等于(*pxPreviousWakeTime+xTimeIncrement)时,任务解除阻塞。

2.3、用法举例

// Perform an action every 10 ticks.
 void vTaskFunction( void * pvParameters )
 {
 TickType_t xLastWakeTime;
 const TickType_t xFrequency = 10;

     // Initialise the xLastWakeTime variable with the current time.
     xLastWakeTime = xTaskGetTickCount();

     for( ;; )
     {
         // Wait for the next cycle.
         vTaskDelayUntil( &xLastWakeTime, xFrequency );

         // Perform action here.
     }
 }

3、获取任务优先级函数

3.1、函数描述

UBaseType_t uxTaskPriorityGet( TaskHandle_t xTask );

获取指定任务的优先级。

3.2、参数描述

xTask—任务句柄。NULL 表示获取当前任务。

3.3、返回值

返回指定任务的优先级。

4、设置任务优先级函数

4.1、函数描述

void vTaskPrioritySet( TaskHandle_t xTask,
                   UBaseType_t uxNewPriority );

设置指定任务的优先级。如果设置的优先级高于当前运行的任务,在函数返回前会进行任务切换。

4.2、参数描述

xTask—任务句柄。NULL 表示获取当前任务。
uxNewPriority—要设置的新优先级。

5、挂起任务函数

5.1、函数描述

void vTaskSuspend( TaskHandle_t xTaskToSuspend );

挂起指定任务。被挂起的任务绝不会得到处理器时间,不管该任务具有什么优先级。

5.2、参数描述

xTaskToSuspend—要挂起的任务句柄。为NULL表示挂起当前任务。

6、恢复挂起任务函数

6.1、函数描述

void vTaskResume( TaskHandle_t xTaskToResume );

恢复挂起的任务。

6.2、参数描述

xTaskToResume—要恢复任务的任务句柄。

7、恢复挂起的任务(在中断中使用)

7.1、函数描述

BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume );

在ISR中,用于恢复一个挂起的任务。xTaskResumeFromISR不可用于任务和中断间的同步,如果中断恰巧在任务被挂起之前到达,这会导致一次中断丢失(任务还没有挂起,调用xTaskResumeFromISR函数没有意义,只能等下一次中断)。

7.2、参数描述

xTaskToResume—要恢复任务的任务句柄。

7.3、返回值

pdTRUE—任务需要切换上下文。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值