ESP8266 RTOS中的FreeRTOS相关函数
Posted praybb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP8266 RTOS中的FreeRTOS相关函数相关的知识,希望对你有一定的参考价值。
- 优先级
数值越大优先级越高
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)
:获取未分配的内存堆历史最小值
以上是关于ESP8266 RTOS中的FreeRTOS相关函数的主要内容,如果未能解决你的问题,请参考以下文章
乐鑫esp8266学习rtos3.0笔记:分享在 esp8266 C SDK如何通过外部写入参数,程序里面实现动态获取参数。
乐鑫esp8266学习rtos3.0笔记:分享在 esp8266 C SDK如何通过外部写入参数,程序里面实现动态获取参数。
乐鑫esp8266学习rtos3.0笔记:分享在 esp8266 C SDK如何通过外部写入参数,程序里面实现动态获取参数。