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

【经验分享】STM32G0学习手册——FreeRTOS软件定时器

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
1.创建好带有printf-stdarg.c的FreeRTOS的工程$ e0 [' g  _! L' V
- U4 r  n# e/ R7 A; M) F0 U
2.修改main.c文件* G2 o- W4 H! T5 d4 C
, A6 c/ E* Q1 q. C
  1. /* USER CODE BEGIN Includes */, @6 j7 K4 r# F1 h2 u: R
  2. ! H( G+ i4 W3 J8 j5 {9 f
  3. #include "FreeRTOS.h", Q4 l5 Q; j6 i7 U# |, G8 \) I9 t8 f+ a
  4. #include "task.h"
    9 f; ]2 [) a8 L. n8 u9 Y" o
  5. #include "timers.h"1 c" X9 S7 p/ _& l( _
  6. #include <stdio.h>( ~6 x/ B2 \  l9 u, Y
  7. #include <string.h>) T, i' h& V, Y* y8 @6 |
  8. 5 ?- Q2 S( [! P
  9. /* USER CODE END Includes */
    ! L" c* z) V/ V, t) g) i; `; T! a
  10. /* USER CODE BEGIN PV */$ h: p1 F; ~) J" @4 O
  11. static TaskHandle_t AppTask_Handle = NULL;
    % e) f7 T# F0 ]* T8 k9 g
  12. static TimerHandle_t  Timer1_Handle = NULL;6 V+ z$ c+ |( Q2 r6 j7 f
  13. : E' b$ t! K% Z0 g; a4 S# M
  14. extern int f_printf(const char *format, ...);" \: R2 |! s# j0 Y: L$ A* g- d
  15. 9 u" C. @: Q$ H# s
  16. /* USER CODE END PV */% @9 F. Q) o2 s/ [& h

  17. : x: H/ t1 B7 H+ ]* V5 ?  o
  18. /* Private function prototypes -----------------------------------------------*/
    ! r, p8 i- u& k, k7 B; M
  19. void SystemClock_Config(void);) ?7 d# q( U! m
  20. /* USER CODE BEGIN PFP */! w9 M( u7 x8 k; N
  21. + `) y4 i; z4 O% ?, ~
  22. static void AppTaskCreate(void);
    0 H9 r9 Y' ^1 d0 R- R/ C- C4 ~
  23. static void TimerCallback(void);
    , T! Z2 E7 k0 V' T! C! n  r" a8 {" I
  24. . |, w) q5 a/ i# L# h
  25. /* USER CODE END PFP */
    9 M1 [$ k4 y' o+ h5 B1 j4 O

  26. 1 M4 @4 e6 J/ R/ g$ _, Y
  27. int main(void)" r2 p1 U- B/ C  J; ]# K( R
  28. {
    # D- a9 p6 p' `8 Z1 \8 Y
  29.   /*/ `$ p" o8 a: c
  30.    */ \: I! V6 Z/ N8 ]( v
  31.    */
    6 ~9 n; B1 n, D! Z/ F. d% e
  32. " R; Q3 V- W9 U+ o5 w3 _
  33.   /* USER CODE BEGIN WHILE */
    5 B8 V: k+ ]' \5 D' N1 q6 V
  34.   UBaseType_t xReturn = pdFALSE;
    ( a; J# n0 t- P1 ]- n' ~+ S% a
  35. 2 d" ~2 n; B2 o# c" O* z! n
  36.         xReturn = xTaskCreate((TaskFunction_t)AppTaskCreate,4 f5 G* X# {+ ^/ m4 J
  37.                         (const char *)  "APPTASKCREATE",
    8 E' J5 @* e/ {4 u" _% y; l
  38.                         (uint16_t)      128,$ y) }  v4 m" q4 q' Y% s
  39.                         (void *)        NULL,
    : E0 R7 i4 K! Y' G
  40.                         (UBaseType_t)   1,+ M1 s+ J- O2 M9 I
  41.                         (TaskHandle_t *)&AppTask_Handle);
    3 {- I2 X9 w0 x) s
  42. $ W" r+ J: h7 T8 p3 i3 A, n
  43.   if(xReturn != NULL)
    9 q6 x8 V3 n5 D/ R  }  Q! O8 Q
  44.         {
    " |9 T" ?& `& L6 [& y2 X
  45.                 f_printf("Task Create PASS.\r\n");+ ~5 _6 ~0 A0 o) U
  46.                 vTaskStartScheduler();& t! P% ?$ x6 m$ y
  47.         }4 y3 Y2 B6 U/ S2 A# ^
  48.         " h% K1 d% ^8 B0 o& ?: W" n
  49.         
    5 e  r0 l+ R4 U9 W- K; {
  50.   while (1)$ b7 ~  N* Z, Z
  51.   {
    5 w; s- M2 c/ Y* ~, l
  52.     /* USER CODE END WHILE */& b' {7 e. G# R
  53. * t3 b7 w% C- h& c& R% h/ _5 o
  54.     /* USER CODE BEGIN 3 */' X* [4 X" G( x" j" r4 t" x" E5 z
  55.   }
    8 g3 H  p) c0 @0 W3 s
  56.   /* USER CODE END 3 */: Y8 g) P/ Q1 M1 X
  57. }
    ! F2 ?1 k0 \( C6 P0 t- q, q
  58. & h# m: ~" C, b
  59. , q( A% G+ T: R& a9 u: f5 W
  60. /* USER CODE BEGIN 4 */! }% {. n" W1 I4 I. D" K
  61. static void AppTaskCreate(void)
    $ ?* x5 I8 \! M) }& I7 N/ Q
  62. {/ p& @1 W( y7 S+ j  B
  63.         BaseType_t xReturn = pdFALSE;1 v$ F, |; H; L8 V9 L
  64.         
    6 Z. X, T3 H) c! u
  65.         Timer1_Handle = xTimerCreate( (const char *) "TIMER1",(TickType_t)1000,
    - d6 ]( t' i0 K1 r1 n6 C
  66.                           pdTRUE, (void*) 1,(TimerCallbackFunction_t)TimerCallback);# Z' j' H4 r% h. O" ?
  67.         , m$ s7 v! O; t+ _4 y
  68.         if( Timer1_Handle !=NULL)' |4 ]- ~! }: c# n7 l( r
  69.                 f_printf("Timer1 Create PASS.\r\n");" R1 Q! f; _9 u. G- v% J" u
  70.         
    ; r7 N) n  G# j
  71.         xReturn = xTimerStart(Timer1_Handle,0);- A5 S6 W! N4 i( Y& O% x  X1 j8 W
  72.         : |* X0 u1 M+ p( X- H
  73.         if(xReturn != pdFALSE)
    9 Z0 r( ]$ I% ]) e/ M
  74.         {
    ) J! i+ u. T7 ?
  75.                 f_printf("Timer1 START.\r\n");
    & o# H, }4 ?) ]4 V
  76.                 vTaskDelete(AppTask_Handle);
    & \3 a' Y( V; w: m7 D5 `
  77.         }% b' K8 I- f/ n3 A6 b4 Q
  78.         
    # F5 q8 p2 Y. n7 O& Z+ n' ]: C
  79. }
    ! N6 a, L) z6 H! u2 O5 W. @% w
  80. static void TimerCallback(void)7 [* M4 R( w  p% d9 y  ]+ Y8 b
  81. {% _, h" _: Z9 h% J5 I* [
  82.         HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    8 o! p  U0 ?! B, B9 d

  83. ; }( R) l/ R4 \- z
  84. }9 ?# r7 M4 \" m+ @. s3 n% B' O& a% z! d
  85. /* USER CODE END 4 */
复制代码

! X# c2 g9 R* r5 q5 p7 s0 y) C' x
# G9 x& D) s& [0 b- ~; d& D8 q4 ?8 M" S& \& U. B9 Y
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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