一、任务创建、删除、挂起与恢复
. }5 ]% j6 s) w* l9 ]0 {- 1、xTaskCreate()//动态方法创建任务$ b5 `# u0 q1 e& b @
- 2、xTaskCreateStatic()//静态方法创建任务, \$ f6 Y4 U( Q d
- 3、xTaskCreateRestricted()//创建一个MPU限制任务,相关内存用动态内存分配
/ S) W ^9 X& a }. ` - 4、xTaskDelete()//删除一个任务
复制代码
' o$ D% P6 ^7 C, x. @0 i二、任务其他相关API函数
+ |2 [3 l& p6 X2 m9 g0 T1、 获取系统任务数量
7 |' q9 x Z+ H( U8 @: P
. m ~, n. r4 h1 E2、获取系统中任务状态, o) s' Q4 @8 W7 Q8 @
- uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime )
复制代码
0 \! o: _! Y1 f通常要申请内存配合下面两个函数使用:, l* D4 ~5 n# f- u" @" x; B& g
- TaskStatus_t *StatusArray=pvPortMalloc(ArraySize*sizeof(TaskStatus_t));//申请内存( a1 w4 E3 ], B" i7 A7 S' ~
8 u7 M2 B3 C, \# D+ c- W7 S- vPortFree(StatusArray); //释放内存
复制代码
) m) V# K k" `1 m3 X0 E3、获取某个任务信息
! L D# D Z& {; S0 a' ^. h2 l- void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState )
复制代码 8 r/ m4 Y c# ^
4、根据任务名获取任务句柄# b: s% R# d' S) _# }7 B) V4 p
- TaskHandle=xTaskGetHandle("led0_task");//根据任务名获取任务句柄。
复制代码 : i3 w6 g' ~! U# V
5、获取任务信息
$ R" h2 {5 B6 P- //获取LED0_Task的任务信息8 P8 s$ G" O* _# b- e; K$ K
- vTaskGetInfo((TaskHandle_t )TaskHandle, //任务句柄) v% o; l/ I( m% x* [; _( k* Y
- (TaskStatus_t* )&TaskStatus, //任务信息结构体
% P s, E; ?) l4 S l6 N( m - (BaseType_t )pdTRUE, //允许统计任务堆栈历史最小剩余大小 ]% `1 Y& ^5 |8 S, O, K
- (eTaskState )eInvalid); //函数自己获取任务运行壮态
复制代码 3 \$ b) m) z# H1 `
& q' O" P: m& N8 j' h7 n! {
6、获取任务的任务壮态, A; {/ N9 J% m
- TaskState=eTaskGetState(TaskHandle);//获取query_task任务的任务壮态
复制代码
' S: D! [) [7 E% Y7、获取所有任务的信息4 j2 Y# [2 [) w8 X
- vTaskList(InfoBuffer); //获取所有任务的信息
复制代码 7 i6 G% i6 W: |( i
8、获取任务运行时间信息
e; Z# M* v+ {0 `3 b- vTaskGetRunTimeStats(RunTimeInfo); //获取任务运行时间信息
复制代码 4 g; k$ u( A, S- N6 w; }) V
总结:1 {0 R5 p- O; u
以上是一些比较常用的任务相关的API函数。
* Y2 [2 v, V1 z, Z' o9 p3 s9 W2 a1 n: M% N4 I6 ?3 q+ `& k
- G$ Z0 f! O: w: k, o |