一、任务创建、删除、挂起与恢复3 ?; v ?- z( B% A3 q( w5 ]) j
- 1、xTaskCreate()//动态方法创建任务
6 |' ]8 ~# n2 E/ @. Z$ c/ W - 2、xTaskCreateStatic()//静态方法创建任务1 b3 E# C: R+ u+ i% \2 F
- 3、xTaskCreateRestricted()//创建一个MPU限制任务,相关内存用动态内存分配
1 N' S0 A, O2 z2 ^9 b - 4、xTaskDelete()//删除一个任务
复制代码
/ _5 l: Q: ?) H6 C* S) H$ y二、任务其他相关API函数
3 h" i9 O& \( k7 u3 _ U1、 获取系统任务数量
; @$ K2 Y7 _( \, }. G: p1 Z6 i T* {7 a+ L0 J
2、获取系统中任务状态+ [& l7 T" F/ @: ~% F' o
; S+ c e6 ^4 |' J$ d5 }# E, F w
- uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime )
复制代码
! c" Y3 f. L8 k- A2 t* k通常要申请内存配合下面两个函数使用:
# m: ]) Q/ R. y
1 m# W7 Q4 e9 l; ^' K2 }- TaskStatus_t *StatusArray=pvPortMalloc(ArraySize*sizeof(TaskStatus_t));//申请内存
4 d2 D b O. v! w* m9 V6 V6 M% c: e6 [
( @5 g! @& S6 E0 e$ ^& i9 d- vPortFree(StatusArray); //释放内存
复制代码
. p Z& E6 _ A1 X3、获取某个任务信息
$ I. q8 E E& ^. S& t8 r" V) p- C7 L9 l8 N- N. k# K9 E3 F4 K. A
- void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState )
复制代码
; D9 R w/ Z' }2 o/ I! I/ j. z& ?% l4、根据任务名获取任务句柄0 d+ g3 e( n2 Q5 T0 F# r( S
' y- ]: a% S7 C1 }0 ?5 l
- TaskHandle=xTaskGetHandle("led0_task");//根据任务名获取任务句柄。
复制代码
! ], `% m2 E7 ^* d# @4 O5、获取任务信息% }! h/ U# U: @$ }; w) [4 l, R
; j" R" e9 m$ @9 ^2 B0 ~- //获取LED0_Task的任务信息# y$ S4 B$ K, X" q
- vTaskGetInfo((TaskHandle_t )TaskHandle, //任务句柄) M1 [- x/ m" b- J9 w
- (TaskStatus_t* )&TaskStatus, //任务信息结构体
$ u' D$ ^! E) t5 y5 Q$ ^ - (BaseType_t )pdTRUE, //允许统计任务堆栈历史最小剩余大小2 i' W7 T# N! d. Q
- (eTaskState )eInvalid); //函数自己获取任务运行壮态
复制代码 m( H& [, ^) z, |7 l
6、获取任务的任务壮态
% A7 h- E" K `, d, `3 |! |
. k L7 r* E! G' b5 D7 x- TaskState=eTaskGetState(TaskHandle);//获取query_task任务的任务壮态
复制代码
: e' Z% W; `: h; O) F+ Q8 k7、获取所有任务的信息
5 j6 h: \+ c! ?6 P1 p+ x
. |6 f+ U: T- d. h- vTaskList(InfoBuffer); //获取所有任务的信息
复制代码
7 l# W8 d1 ~3 `$ J' ^3 F3 t9 M/ X8、获取任务运行时间信息
/ B' o/ F8 k' a$ l y8 A- f% j% a( n, Y" |, | _
- vTaskGetRunTimeStats(RunTimeInfo); //获取任务运行时间信息* a) |' @ o8 u
复制代码 1 e( N+ t, y. y4 v
总结:( ]. M8 X, C. G2 ?; L
以上是一些比较常用的任务相关的API函数。9 n+ Y9 s( ~ w3 u. Q- s8 t( J g
8 M5 O$ ]) T+ x5 A5 u/ [. o8 t
|