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

【经验分享】STM32cubeMX快速配置FreeRTOS任务

[复制链接]
STMCU小助手 发布时间:2022-5-22 21:46
前言
+ r& ~5 r# s9 N9 u8 u. w本文带大家使用cubeMX快速配置FreeRTOS的任务。  D* {- q  ?$ L% Z+ R
/ C. c/ j& a. l) y% L1 `' b
一、cubeMX配置# A8 H& o; a9 W# i7 W! S
1.选择FreeRTOS
  s2 a4 Q) L2 _; g; j ~$[57C1MPECO6{TQYILLA@N.png # A% Z0 ?9 V% S& ]7 O) a. i2 T. x9 N

  T7 ^( h6 b8 p! }# j2.为FreeRTOS分配任务栈大小( g' s; u/ o( f% L

$ x# s* X: Y8 f, u* ^) b 5)LA(OK]N1JHF}K3IYEF5~X.png $ o) Q6 p/ T. Q$ N# O

! ]  o; E3 U# P( Z这里内存可以设置大一点,内存不足会导致任务无法创建。
4 g- @' \) d. d4 j& q) J1 u
0 T. M: f* ?9 A3 \: z6 k3.创建任务
% m9 R& d6 Y, E" y2 Y点击Add添加一个任务4 y" a, N4 M3 Z* C: T

8 a0 N( p  f: t %_BH68D0RW{)7P{}NPXE0.png
- w1 l6 v2 Q4 A+ a2 m
" c2 P- B* f) y1.Task Name:任务名字% Q2 T! m9 Q" a+ U
2.priority:任务优先级+ x" A3 M; z" s; d2 _3 `: t: n
3.Stack size:任务堆栈大小(字节)
$ x# L: C& J: s4 c4.Entry Function:任务函数名字
0 `, m" j; J- |8 e7 K3 Y其他几个参数我们设置为默认值就OK了
4 h$ V6 h+ L. l: y) I- M2 }/ e" ]( \8 @
二、代码查看
! O% S* k/ m+ z5 T1.创建任务' ]% J, m+ E% \
) K  ?0 f! C' e) Z- D
  1. //cubeMX帮我们自动生成的任务1 V7 Z$ ^2 ?# @3 e+ l
  2. /* Create the thread(s) */
    # \& R* y/ F# p+ z' y  b+ K, V; C" t0 x
  3. /* definition and creation of defaultTask *// L7 p/ E9 ]) g9 n" k# Q) _
  4. osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);4 j  w! i) ?" R5 D. o2 B/ ]
  5. defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);$ }- n) @- T7 a
  6. ) a) j) I6 U7 j( Z+ t
  7. //我们自己创建的任务
    0 C: l& t- d4 M. V6 H. l7 Q
  8. /* definition and creation of Task1 */
    3 `& B+ E) @2 b& F
  9. osThreadDef(Task1, StartTask1, osPriorityNormal, 0, 128);
    # D, L! v* l% E( O2 O
  10. Task1Handle = osThreadCreate(osThread(Task1), NULL);) z- E# {3 R4 y, d2 K- h  x
  11. # R  b5 N" b' d8 y6 v
  12. /* USER CODE BEGIN RTOS_THREADS */+ S) O' F9 V5 e  E7 F
  13. /* add threads, ... */  S4 p% i6 B4 T5 u5 q4 Q  O
  14. /* USER CODE END RTOS_THREADS */
    $ }, r  R8 ]: I9 n7 Y! r, f! G! M8 R

  15. 0 t4 H1 F. X6 V9 q2 B
  16. /* Start scheduler */" e7 T7 }- c, Y
  17. osKernelStart();//开启任务调度器
复制代码

, D. R' K4 w$ Y# N+ h, n2.任务函数
! f5 B8 ?6 p( [使用osDelay函数会释放资源使任务进入阻塞状态。
! s2 e( W5 J- t: [% Z1 w& K
# N9 d7 K* [$ s& r% t
  1. /* USER CODE END Header_StartDefaultTask */
    5 d, v% ^% e$ y9 C
  2. void StartDefaultTask(void const * argument)& k3 @8 F# ]) z" ~7 [0 j. N, @
  3. {
      {% m& B2 a) c
  4.   /* USER CODE BEGIN 5 */
    * `3 r5 {1 J8 W: _" e4 K, n! q
  5.   /* Infinite loop */
    % E5 ?  g# y6 [
  6.   for(;;)
    " a7 O' U: N- \2 Z5 Q
  7.   {/ Q5 X, n0 \( |2 J4 w
  8.   |! P- Z6 t* f/ B, y' f
  9.   }5 ~/ H+ h; g9 o( N) m. ~% m: T
  10.   /* USER CODE END 5 */5 a$ I. ~6 \5 G% a  S# V0 y- g
  11. }. C: ^. B3 F1 Y* Y
  12. . G# W6 M6 ?: @# M# Q; o9 L$ x5 {
  13. /* USER CODE BEGIN Header_StartTask1 */
    - k' }; c* L+ M: ^1 ]! k3 w9 v
  14. /**
    / M( z4 z1 t  ]  f) a
  15. * @brief Function implementing the Task1 thread.! e" U! b$ J, Y# I7 Y. i/ @
  16. * @param argument: Not used
    % @+ m5 y  A9 R6 Y6 V
  17. * @retval None1 i; [  K1 e; o
  18. */
    & ?- V* k9 ~3 E" b) g) \+ ?# j
  19. /* USER CODE END Header_StartTask1 */
    ' C, ]* c8 W" i  R4 Z# j
  20. void StartTask1(void const * argument)
    7 N: Q# o! j/ E: F. C3 f' I
  21. {) M8 h4 q( d8 ~3 L6 s
  22.   /* USER CODE BEGIN StartTask1 */
    / m% O8 a/ L" a9 C
  23.   /* Infinite loop */! I  j1 p2 D- P/ M2 w  J3 c
  24.   for(;;)
    % i. r+ o  C- U) ~+ Q* y
  25.   {2 x$ A" o/ d4 {0 K
  26.     osDelay(1);
    8 D1 p5 y4 |& \
  27.   }
    4 i  _3 {% \8 @
  28.   /* USER CODE END StartTask1 */: ~1 b" j& f, ~2 |- W4 ?/ P
  29. }
复制代码
: q2 z- k/ S  B+ g2 L6 P
总结
' b- ~) m6 A- h/ J4 }7 e  V9 f使用cubeMX配置能大大减小我们代码的书写量。
. r9 g9 Q& v( F4 j# H: _
- o8 z7 I0 h0 B9 O  y/ [9 c) S% H: g* I9 l8 ~  d6 M% Z/ }1 `& ^/ H; d0 J

- Y, F% _: M0 F7 P+ f0 A( j
收藏 评论0 发布时间:2022-5-22 21:46

举报

0个回答

所属标签

相似分享

官网相关资源

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