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

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

[复制链接]
STMCU小助手 发布时间:2022-3-10 21:37
一、任务创建、删除、挂起与恢复) L" s9 V$ S. k
  1. 1、xTaskCreate()//动态方法创建任务( a. p1 z' \& ]7 W5 U/ G$ P
  2. 2、xTaskCreateStatic()//静态方法创建任务
    ; ]8 `. W) s+ ?/ c/ o& m+ y" n
  3. 3、xTaskCreateRestricted()//创建一个MPU限制任务,相关内存用动态内存分配
    0 p& [: i$ w) F% W0 `" l
  4. 4、xTaskDelete()//删除一个任务
复制代码
( R& E# O8 C0 v
二、任务其他相关API函数
: A/ ~/ `/ i% a! d8 A$ H" O1、 获取系统任务数量3 W4 J6 A% u2 ?
  1. uxTaskGetNumberOfTasks()
复制代码

7 }8 u6 X+ I  n9 V& @# w8 H2、获取系统中任务状态
: N: v9 J- _- D; G7 d& }9 _
  1. 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
  1. TaskStatus_t *StatusArray=pvPortMalloc(ArraySize*sizeof(TaskStatus_t));//申请内存( R7 S/ X* ~4 B8 s. O3 W  o

  2. . }2 H/ N  f( m, G* p
  3. vPortFree(StatusArray);        //释放内存
复制代码

  i/ {9 Q& w4 T$ o3、获取某个任务信息
; R" M8 R7 P* C8 J
  1. 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
  1. TaskHandle=xTaskGetHandle("led0_task");//根据任务名获取任务句柄。
复制代码
8 S" n6 q9 D) C$ q% A6 I1 ]
5、获取任务信息% E, x4 j: C5 P0 a; A
  1. //获取LED0_Task的任务信息& ^  z2 {1 u: Y) \
  2. vTaskGetInfo((TaskHandle_t        )TaskHandle,                 //任务句柄0 [5 K& c, w# D: n6 O
  3.                          (TaskStatus_t*        )&TaskStatus,                 //任务信息结构体
    8 }, W2 ]) I+ E
  4.                          (BaseType_t        )pdTRUE,                        //允许统计任务堆栈历史最小剩余大小
    6 S; i. m/ V! S# h; Y
  5.                      (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 `
  1. TaskState=eTaskGetState(TaskHandle);//获取query_task任务的任务壮态
复制代码

& D9 K( x2 y# X+ `# e7、获取所有任务的信息; t5 K' p' ?9 |+ w/ g8 N$ F
  1. vTaskList(InfoBuffer);         //获取所有任务的信息
复制代码
- q& e' g' J, C) C" n7 }& S8 D% p
8、获取任务运行时间信息
- o9 `# |$ W+ y( p% X" Q
  1. 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, }( ~
收藏 评论0 发布时间:2022-3-10 21:37

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版