- 优先级
数值越大优先级越高
SDK低层优先级:pp task(13) ets timer线程(12)lwip task(10)freeRtos timer(2)idle(0)
可供用户线程使用的优先级为1~9,请勿修改 freeRTOSconfig.h
- 状态:
- 任务创建
头文件:task.h
portBASE_TYPE xTaskCreate(pdTASK_CODE pvTaskCode,
const portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pvCreatedTask
);
/*
pvTaskCode :指向任务的实现函数的指针,效果上仅仅是函数名。
pcName : 具有描述性的任务名,FreeRTOS不会使用它。
usStackDepth :指定任务堆栈的大小
pvParameters :指针用于作为一个参数传向创建的任务(注意这里传的是指针,所以请不要用局部变量,请保证指针的有效性)
uxPriority :任务运行时的优先级
pvCreatedTask:用于传递任务的句柄,可以引用从而对任务进行其它操作
*/
- 任务的延时
void vTaskDelay{portTickType xTicksToDelay}
void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickTypexTimeIncrement );
- 任务删除
void vTaskDelete( xTaskHandle pxTask )//传递NULL将删除自己
- 任务实现
ATaskFunction(void *pvParameters){
int iVariableExample =0;
for(;;)
{
}
vTaskDelete(NULL);
}
- 任务优先级
unsigned portBASE_TYPE uxTaskPriorityGet(xTaskHandle pxTask)
pxTask 需要处理的任务,当传递NULL时,将返回调用该任务的优先级
void vTaskPrioritySet(xTaskHandle pxTask,unsigned PortBASE_TYPE uxNewPriority)
pxTask 需要处理的任务,当传递NULL时,将设置调用该任务的优先级
uxNewPriority 任务需要设置的优先级
- 任务挂起
void vTaskSuspend(xTaskHandle pxTaskToSuspend)
pxTaskToSuspend 处理需要挂起的任务,传递NULL将挂起调用此函数的任务
void vTaskResume(xTaskHandle pxTaskToResume)
pxTaskToResume 就绪任务的句柄
- FreeRTOS内核规定的几个内存管理函数:
void *pvPortMalloc(size_t xSize)
:内存申请函数
void vPortFree(void *pv)
:内存释放函数
void vPortInitialiseBlocks(void)
:初始化内存堆函数
size_t xPortGetFreeHeapSize(void)
:获取当前未分配的内存堆大小
size_t xPortGetMinimumEverFreeHeapSize(void)
:获取未分配的内存堆历史最小值