一、任务创建、删除、挂起与恢复) L" s9 V$ S. k
- 1、xTaskCreate()//动态方法创建任务( a. p1 z' \& ]7 W5 U/ G$ P
- 2、xTaskCreateStatic()//静态方法创建任务
; ]8 `. W) s+ ?/ c/ o& m+ y" n - 3、xTaskCreateRestricted()//创建一个MPU限制任务,相关内存用动态内存分配
0 p& [: i$ w) F% W0 `" l - 4、xTaskDelete()//删除一个任务
复制代码 ( R& E# O8 C0 v
二、任务其他相关API函数
: A/ ~/ `/ i% a! d8 A$ H" O1、 获取系统任务数量3 W4 J6 A% u2 ?
7 }8 u6 X+ I n9 V& @# w8 H2、获取系统中任务状态
: N: v9 J- _- D; G7 d& }9 _- uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray, const UBaseType_t uxArraySize, uint32_t * const pulTotalRunTime )
复制代码
) E3 Q" w8 J1 L0 h通常要申请内存配合下面两个函数使用:5 j8 H: U( K5 ?# T* d5 f
- TaskStatus_t *StatusArray=pvPortMalloc(ArraySize*sizeof(TaskStatus_t));//申请内存( R7 S/ X* ~4 B8 s. O3 W o
. }2 H/ N f( m, G* p- vPortFree(StatusArray); //释放内存
复制代码
i/ {9 Q& w4 T$ o3、获取某个任务信息
; R" M8 R7 P* C8 J- void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t *pxTaskStatus, BaseType_t xGetFreeStackSpace, eTaskState eState )
复制代码 ! h5 A* z0 P6 f Q! C: v
4、根据任务名获取任务句柄, o2 e- C5 z0 O; T9 N
- TaskHandle=xTaskGetHandle("led0_task");//根据任务名获取任务句柄。
复制代码 8 S" n6 q9 D) C$ q% A6 I1 ]
5、获取任务信息% E, x4 j: C5 P0 a; A
- //获取LED0_Task的任务信息& ^ z2 {1 u: Y) \
- vTaskGetInfo((TaskHandle_t )TaskHandle, //任务句柄0 [5 K& c, w# D: n6 O
- (TaskStatus_t* )&TaskStatus, //任务信息结构体
8 }, W2 ]) I+ E - (BaseType_t )pdTRUE, //允许统计任务堆栈历史最小剩余大小
6 S; i. m/ V! S# h; Y - (eTaskState )eInvalid); //函数自己获取任务运行壮态
复制代码 , c5 o' _' V) G9 K/ B7 L2 w& r" t& @
7 F2 ~& V0 B* S# Y E; q Q
6、获取任务的任务壮态
( s) |0 W0 H& X! r7 d; K3 `- TaskState=eTaskGetState(TaskHandle);//获取query_task任务的任务壮态
复制代码
& D9 K( x2 y# X+ `# e7、获取所有任务的信息; t5 K' p' ?9 |+ w/ g8 N$ F
- vTaskList(InfoBuffer); //获取所有任务的信息
复制代码 - q& e' g' J, C) C" n7 }& S8 D% p
8、获取任务运行时间信息
- o9 `# |$ W+ y( p% X" Q- vTaskGetRunTimeStats(RunTimeInfo); //获取任务运行时间信息
复制代码
6 g* h$ u6 ~% \" E总结:
; ?* t+ M8 C+ i* S以上是一些比较常用的任务相关的API函数。" x0 B4 R1 b `2 x5 Q! x$ B( E
( u& e$ t) r4 g5 I
' `5 }% R2 }. a8 P: b, }( ~ |