使用静态方式创建一个任务,该任务每个1秒打印一个字符串:
#define STATIC_STACK_SIZE 5 UBaseType_t Static_Task_Priority = 1; StaticTask_t Static_xTaskBuffer; StackType_t Static_xStack[STATIC_STACK_SIZE]; TaskHandle_t Static_xhandle = NULL; //任务句柄 void static_task_code(void *para) { static unsigned int cnt = 0; for (;;) { PRINT(" static task cnt %u...", cnt); cnt++; vTaskDelay(1000); } } Static_xhandle = xTaskCreateStatic (static_task_code, "static task", STATIC_STACK_SIZE, NULL, Static_Task_Priority, Static_xStack, &Static_xTaskBuffer); 3.6 vTaskDelay()函数原型:
#include "FreeRTOS.h" #include "task.h" void vTaskDelay( const TickType_t xTicksToDelay );描述:调用该函数的任务将进入阻塞态,中断一段固定的时钟周期。
函数参数:xTicksToDelay表示调用函数的任务的阻塞态保持时间。延时达到之后将进入就绪态。例如:当时钟计数到10000时,函数调用了vTaskDelay(100),然后任务进入阻塞态,并且保持阻塞态直到时钟计数到10100。
宏pdMS_TO_TICKS()可以被使用来延时毫秒。例如:调用vTaskDelay( pdMS_TO_TICKS(100) ),任务将进入阻塞态100毫秒。