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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
1.创建好带有printf-stdarg.c的FreeRTOS的工程  f' }: p8 e7 p6 X
1 P1 e, k3 d4 l9 X& A9 d: Y$ K
2.修改main.c文件( j0 q, a0 I0 l
- w+ `% n) P+ t5 i' J
  1. /* USER CODE BEGIN Includes */
    . N7 L* a6 N3 u" M; L: r
  2. 9 S; R' C  o2 k0 E
  3. #include "FreeRTOS.h"
    4 ^9 ]/ H( O/ T1 W9 V
  4. #include "task.h"9 o! X4 e3 [' E' R9 `7 ^4 H
  5. #include "timers.h"
    ( r1 o- P7 E* g3 F6 q* {
  6. #include <stdio.h>
    ) z. b0 K* ]- x' ]/ J- l
  7. #include <string.h>
    / N: f0 U/ r: l8 y  @* s
  8. + o# x9 u, P/ B" O
  9. /* USER CODE END Includes */# E- o3 \+ Y' X# t  k: t- F
  10. /* USER CODE BEGIN PV */) S, b8 w* b( n; E/ Q
  11. static TaskHandle_t AppTask_Handle = NULL;- \  r( _+ E% {6 j' ]2 w
  12. static TimerHandle_t  Timer1_Handle = NULL;
    & U5 N# Z+ F0 z9 `1 f4 F

  13. + `2 l7 N' V  G: Z2 l- Y
  14. extern int f_printf(const char *format, ...);) a! T, r5 p8 }, n; v' n

  15. ; J, _* }: i! {6 J6 E8 e# l1 e
  16. /* USER CODE END PV */8 e7 ^) G5 c) d0 f) u; p
  17. . {+ C$ X7 U7 }. H3 A# K0 S
  18. /* Private function prototypes -----------------------------------------------*/
    8 ]/ F3 [9 N1 J/ l
  19. void SystemClock_Config(void);' @! N" z! Z) E  c: h8 z4 I" x
  20. /* USER CODE BEGIN PFP */( U2 ?/ Q( W! p' S; k  E8 S# q& D

  21. 6 g% S  w5 O% v. z5 q
  22. static void AppTaskCreate(void);
    . r0 e2 n( k# l* x1 v7 i! j
  23. static void TimerCallback(void);) A2 ]1 G, V8 r) {; a9 L. b$ j+ d

  24. , u& a6 @, x1 [! y0 @5 d, x
  25. /* USER CODE END PFP */! v% I& i! R7 G% f
  26. $ s3 g0 k2 d3 s' s8 P/ I6 D
  27. int main(void)( X/ Q" n- g( L8 ?
  28. {% N5 U4 C, v+ b# V/ t
  29.   /*
    % f2 M; w) k% r- V6 k& e+ n
  30.    *
    8 \, [- D. \: H2 o4 V* T9 O. n
  31.    */
    6 X2 c) N) N# C3 m
  32. 7 X1 z1 r/ g2 N; f! O
  33.   /* USER CODE BEGIN WHILE */
    " b. M  u7 l3 O
  34.   UBaseType_t xReturn = pdFALSE;
    / C: C! O- l. U0 _% O

  35. - J7 X. c# J# B3 c& B5 C
  36.         xReturn = xTaskCreate((TaskFunction_t)AppTaskCreate,0 c, E. r- _1 S, m* u! D7 o
  37.                         (const char *)  "APPTASKCREATE",
    $ V) L- f, x- `$ V3 f: V5 g
  38.                         (uint16_t)      128,3 ^/ @3 U- o9 z+ z
  39.                         (void *)        NULL,; P0 j2 H  g: m5 H, x  w# @+ s
  40.                         (UBaseType_t)   1," d) E* @8 G8 W: ?- y+ [, T
  41.                         (TaskHandle_t *)&AppTask_Handle);! `$ n! p$ k4 M9 h; L4 Q) _- W9 }: x
  42. % v: Z, M% z0 w
  43.   if(xReturn != NULL)
    1 k' `. Y7 w. n" k" e
  44.         {4 A5 X2 Y8 t: N8 U$ ]/ s
  45.                 f_printf("Task Create PASS.\r\n");, V, s2 C: z% o+ X; i) N$ `
  46.                 vTaskStartScheduler();
    ( O7 n: o" s- `1 B
  47.         }' n5 `6 F# A9 N1 e$ c
  48.         ) n7 Y5 l) X+ H. u) |* z9 m) X5 d5 o
  49.         ! [/ }8 _/ l5 T) _
  50.   while (1)
    1 }0 @$ X0 ]6 Z# Q. J
  51.   {
    6 ~$ ~  I. ]9 l- X
  52.     /* USER CODE END WHILE */; E, J! r0 e( B8 b9 A3 \3 j; w

  53. . d, N- w* _8 D8 F, O- S
  54.     /* USER CODE BEGIN 3 */0 O7 Z+ K  d: _% i! N
  55.   }' G4 Z" B- J7 j& x3 ~( |
  56.   /* USER CODE END 3 */
    + E* Y7 p- \% Y- s; S
  57. }
    , I8 }7 g$ P3 {+ \# H
  58. 9 X+ ^! ^/ J0 V( G$ i9 l
  59. ) G: h4 h1 I( Z8 k: C1 ~5 k
  60. /* USER CODE BEGIN 4 */9 u3 i& w, y; o  q8 {' {' }8 g( s
  61. static void AppTaskCreate(void)
    # K$ x# |2 A+ X  c  V* v8 ~0 F
  62. {$ C: }% q( G- T) ^3 K$ N
  63.         BaseType_t xReturn = pdFALSE;* N8 I: J/ O2 @4 }
  64.         $ o1 s. K2 ?, a* D7 `$ E
  65.         Timer1_Handle = xTimerCreate( (const char *) "TIMER1",(TickType_t)1000,
    ) f. ~, R+ U/ L! L9 F( I# V8 W' u
  66.                           pdTRUE, (void*) 1,(TimerCallbackFunction_t)TimerCallback);
    # V* G( j6 m4 ^* x- R$ D
  67.         0 T6 J. n1 ?: N6 g
  68.         if( Timer1_Handle !=NULL)7 C2 D$ I9 Z( \( d. {
  69.                 f_printf("Timer1 Create PASS.\r\n");0 X( Q- j) A+ o/ m. w# ]. f" [5 i
  70.         ' P9 m0 K/ K& {6 W) ]* W
  71.         xReturn = xTimerStart(Timer1_Handle,0);
    0 c" h% Z0 n. T. E0 H
  72.         : J! Q1 X* c/ a# X( ^4 t2 P2 @
  73.         if(xReturn != pdFALSE)4 W  D  r9 ~. H$ S. ~
  74.         {
    0 p7 V6 l4 d; W# }
  75.                 f_printf("Timer1 START.\r\n");
    7 {( @' ?4 Q9 A5 Q$ k7 S) n1 ~
  76.                 vTaskDelete(AppTask_Handle);0 \6 ]8 u3 Q) w7 V3 o4 \; ~
  77.         }& a+ a8 x' V9 @! {0 w9 O2 ?+ U  p
  78.         0 U5 v& V' F3 G6 M' J+ [
  79. }
    : `! Y2 Z" ?$ E# N6 e
  80. static void TimerCallback(void)
    , J9 t7 v0 {( o2 _; ^6 O. V- M
  81. {
    $ l" ?" G5 m! @3 p+ g
  82.         HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);( H2 X0 o, [; W7 d& J- Y9 E: D
  83. ! F/ ^. Z) u! b5 L( |+ D. W. z
  84. }
    5 v  s6 r8 \" c0 _' G' m
  85. /* USER CODE END 4 */
复制代码

4 w1 _4 E& {: J" |
8 y( F# W9 I% @& \3 I( r2 l: O7 w/ P5 L/ Y* g
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版