03_FreeRTOS任务控制
2018-03-05 14:29
423 查看
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、恢复挂起任务函数
4000
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—任务需要切换上下文。相关文章推荐
- FreeRTOS系列第11篇---FreeRTOS任务控制
- FreeRTOS系列第11篇---FreeRTOS任务控制
- FreeRTOS任务管理与控制
- Windows Server 2012 R2 NAP服务器安装与配置03之 NPS服务器DHCP访问控制配置
- 基于嵌入式操作系统VxWorks的多任务并发程序设计(2) ――任务控制
- FreeRTOS详解---任务管理
- C03-Java同步实践加强班第6周上机任务
- FreeRTOS系列第13篇---FreeRTOS内核控制
- (原创)c#学习笔记04--流程控制01--布尔逻辑03--运算符优先级
- FreeRTOS 任务通知
- FreeRTOS系列第14篇---FreeRTOS任务通知
- 20130518-Grails In Action-5、控制应用程序流(03小节)
- Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
- 批量处理任务进度条控制—基于BackgroundWorker
- hive优化之——控制hive任务中的map数和reduce数
- FreeRTOS任务优先级和中断优先级的区别
- 聊聊高并发(四十一)解析java.util.concurrent各个组件(十七) 任务的异步执行和状态控制
- FreeRTOS学习之:任务切换解析
- FreeRTOS - 如何根据FreeRTOS提供的功能(信号量、任务通知、队列等)设计程序
- Linux 任务控制的几个技巧( &, [ctrl]-z, jobs, fg, bg, k...