FreeRTOS-00-基础知识+任务创建删除 (4)

image-20210717164936914

3.5 任务创建和删除实验(静态方法)

使用静态方式创建一个任务,该任务每个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毫秒。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsspy.html