你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32之FreeRTOS:(二)任务相关API函数

[复制链接]
STMCU小助手 发布时间:2022-3-10 10:00
一、任务创建、删除、挂起与恢复3 ?; v  ?- z( B% A3 q( w5 ]) j
  1. 1、xTaskCreate()//动态方法创建任务
    6 |' ]8 ~# n2 E/ @. Z$ c/ W
  2. 2、xTaskCreateStatic()//静态方法创建任务1 b3 E# C: R+ u+ i% \2 F
  3. 3、xTaskCreateRestricted()//创建一个MPU限制任务,相关内存用动态内存分配
    1 N' S0 A, O2 z2 ^9 b
  4. 4、xTaskDelete()//删除一个任务
复制代码

/ _5 l: Q: ?) H6 C* S) H$ y二、任务其他相关API函数
3 h" i9 O& \( k7 u3 _  U1、 获取系统任务数量
; @$ K2 Y7 _( \, }. G: p
  1. uxTaskGetNumberOfTasks()
复制代码
1 Z6 i  T* {7 a+ L0 J
2、获取系统中任务状态+ [& l7 T" F/ @: ~% F' o
; S+ c  e6 ^4 |' J$ d5 }# E, F  w
  1. 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 }
  1. TaskStatus_t *StatusArray=pvPortMalloc(ArraySize*sizeof(TaskStatus_t));//申请内存
    4 d2 D  b  O. v! w* m9 V6 V6 M% c: e6 [

  2. ( @5 g! @& S6 E0 e$ ^& i9 d
  3. 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
  1. 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
  1. TaskHandle=xTaskGetHandle("led0_task");//根据任务名获取任务句柄。
复制代码

! ], `% m2 E7 ^* d# @4 O5、获取任务信息% }! h/ U# U: @$ }; w) [4 l, R

; j" R" e9 m$ @9 ^2 B0 ~
  1. //获取LED0_Task的任务信息# y$ S4 B$ K, X" q
  2. vTaskGetInfo((TaskHandle_t        )TaskHandle,                 //任务句柄) M1 [- x/ m" b- J9 w
  3. (TaskStatus_t*        )&TaskStatus,                 //任务信息结构体
    $ u' D$ ^! E) t5 y5 Q$ ^
  4. (BaseType_t        )pdTRUE,                        //允许统计任务堆栈历史最小剩余大小2 i' W7 T# N! d. Q
  5. (eTaskState        )eInvalid);                        //函数自己获取任务运行壮态
复制代码
  m( H& [, ^) z, |7 l
6、获取任务的任务壮态
% A7 h- E" K  `, d, `3 |! |
. k  L7 r* E! G' b5 D7 x
  1. 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
  1. 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" |, |  _
  1. 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
赞 收藏 评论0 发布时间:2022-3-10 10:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版