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

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

[复制链接]
STMCU小助手 发布时间:2021-11-9 17:00
1.创建好带有printf-stdarg.c的FreeRTOS的工程
. A# {* m$ d6 K. |
4 p6 k" x$ i9 ?. ^' @% e! y2.修改main.c文件
: b& I1 {4 Q( |
/ M2 `8 }/ C) O3 n' d8 F
  1. /* USER CODE BEGIN Includes *// N2 u( v, p: f

  2. # z2 A+ a0 y. W1 S' M; z- I  F
  3. #include "FreeRTOS.h"" y' J/ u$ q% M7 ^, @3 `7 y( S
  4. #include "task.h"4 e! B; t$ h8 G# f  l: e
  5. #include "timers.h"
    ; ^* R5 ]7 i" D$ V0 ~# ]
  6. #include <stdio.h>: A) d6 X' Y, Z! {( m8 }7 X. Y
  7. #include <string.h>
    8 R' V( \1 t2 B3 g

  8. ; U& C9 M: i0 a5 `* D
  9. /* USER CODE END Includes */
      l9 M# w+ W4 h: A  t
  10. /* USER CODE BEGIN PV */
    , H" t8 Z  z; g. |4 f$ e' i- M
  11. static TaskHandle_t AppTask_Handle = NULL;
    # c/ r: C$ ^+ W0 i: u! {% R1 G. c. }
  12. static TimerHandle_t  Timer1_Handle = NULL;
    . a" T1 v' C6 s
  13. , r9 S7 o  N# m0 _* \5 c
  14. extern int f_printf(const char *format, ...);
      d+ h& p2 S* a* I3 h

  15. ; f! r; M& |" Z1 ?
  16. /* USER CODE END PV */
    7 l6 _: `; d6 |. K5 p: Y

  17. ' k; Y7 q1 T5 o& Z" y" X# |" v
  18. /* Private function prototypes -----------------------------------------------*/9 ]! ]& e7 Q' z! Q3 h1 L
  19. void SystemClock_Config(void);% z( G2 {  Q) h
  20. /* USER CODE BEGIN PFP */9 v8 U( O% S6 y' @7 I4 y

  21. 8 {4 j2 e  L( d, O: W% W
  22. static void AppTaskCreate(void);
    , c( V) H& a( ^  E8 s
  23. static void TimerCallback(void);
    6 X! j6 @" G' X+ i. L

  24. - y9 L* Y' E  T' n  o
  25. /* USER CODE END PFP */2 d$ s4 f- K% ]0 g/ q
  26. 0 |/ k" f" `- a1 o
  27. int main(void)' j* y/ v3 R6 N
  28. {% g8 d/ U+ M1 t
  29.   /*- U5 T$ J7 [: E6 Q8 _
  30.    *
    # Z) k- N$ F# T: I
  31.    */) \) y, w- i4 x( J

  32. 7 a5 W# I1 \" @7 S3 _7 i9 X
  33.   /* USER CODE BEGIN WHILE */7 ^* X5 U/ S/ C: w! e7 g
  34.   UBaseType_t xReturn = pdFALSE;
    $ f% B0 ~, Z; l3 M5 ^" B/ X. Y
  35. " a* H* A# b" ~, U0 _) B
  36.         xReturn = xTaskCreate((TaskFunction_t)AppTaskCreate,, }& I' j7 R: v5 I; H
  37.                         (const char *)  "APPTASKCREATE",# E" Y8 L' |. ?% B% D4 b' d
  38.                         (uint16_t)      128,! ]! R- @' m0 ]" Q8 C8 o" a
  39.                         (void *)        NULL,
    4 _# R6 j0 h8 c; u) z" f
  40.                         (UBaseType_t)   1,
    * w5 Z$ h, S, o0 e$ @: h3 I0 _
  41.                         (TaskHandle_t *)&AppTask_Handle);
    - Y% y) d! d7 i1 g( e! Y" v
  42. + w/ S' }# ^' |9 ^/ b
  43.   if(xReturn != NULL)
    # E$ A) D& V" S
  44.         {3 T9 y% J2 G+ Z* w4 W" H
  45.                 f_printf("Task Create PASS.\r\n");3 n$ Q: w6 E- `3 n& M0 k* j
  46.                 vTaskStartScheduler();+ g5 D3 m; o8 n9 Z; `
  47.         }
    ; X% v. L' k5 F$ [( G- `' g
  48.         ) ?8 A2 h2 l6 h$ G# e$ k0 Y
  49.         + \) Z& O) @( W+ b
  50.   while (1)
    ) c& O2 k6 n2 I) M7 W
  51.   {. i  u8 f7 B# ~, B8 J8 T4 t
  52.     /* USER CODE END WHILE */
    $ f/ R: f. ?6 H" N1 D' H

  53. : @* m8 F: x2 {& o- J5 w+ [6 L
  54.     /* USER CODE BEGIN 3 */; O  B+ t+ _$ Z! I" l8 q+ Z, G
  55.   }
    ! Z. Y7 h1 M8 T8 n1 G' E$ l! y  y
  56.   /* USER CODE END 3 */
    ) r+ P. x3 G7 l1 a% p
  57. }2 Q: _/ p' \7 {8 _9 P

  58. 2 H( o+ T" S, ~* N/ Q; Q

  59. + r1 P) ~3 t( k8 |
  60. /* USER CODE BEGIN 4 */
    $ T0 u( z1 o$ a" _
  61. static void AppTaskCreate(void)
    6 @2 y- {  }  [" q" ?4 B* ]; D
  62. {
    ) o: r4 ?; l$ L, W- l4 I
  63.         BaseType_t xReturn = pdFALSE;7 O2 E0 q* Z/ f
  64.         
    5 V" ^+ N6 |* P
  65.         Timer1_Handle = xTimerCreate( (const char *) "TIMER1",(TickType_t)1000,
    0 E: l1 K  U  o  z' e" q1 b
  66.                           pdTRUE, (void*) 1,(TimerCallbackFunction_t)TimerCallback);# a1 ?9 l9 L% M  ~  {# s0 Q
  67.         ) a5 b- p1 O# G" @8 D
  68.         if( Timer1_Handle !=NULL)9 t6 T. V. D& j' s9 `; x3 |* ]1 r
  69.                 f_printf("Timer1 Create PASS.\r\n");/ j$ @! N) N' P6 H0 i- K2 u+ B
  70.         
    ! x; r% |! d! z# K5 @. {  f
  71.         xReturn = xTimerStart(Timer1_Handle,0);
    9 Z2 E  h4 f0 w9 ^$ a2 w
  72.         
    : ^9 ?  O' d: r8 e% Z6 a( F
  73.         if(xReturn != pdFALSE)1 V0 D  Z' L: @; a. @
  74.         {
    9 z: b# Q# }  m# }; L6 I
  75.                 f_printf("Timer1 START.\r\n");
    4 a2 o1 M" q* T2 W1 `5 S; p
  76.                 vTaskDelete(AppTask_Handle);
    3 _* H7 d3 q. r: P. x+ k3 t: j
  77.         }
    4 Y0 B" r9 A) ?- W$ X! S
  78.         ! ]- N7 E: {) @  M' G; h. `; O# h
  79. }
    " z  {$ R' R$ c
  80. static void TimerCallback(void)" K4 |2 \" f  l$ x7 a1 v1 i. Z  d% b
  81. {
    4 R0 Z; H" b2 p) W5 ^: u& i
  82.         HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);3 N: ?  v2 d, {2 k- T% b

  83. , T7 E7 |5 v3 T
  84. }# ]! z  p6 q6 h
  85. /* USER CODE END 4 */
复制代码

* u. a( a: ?  p6 n& O  Q1 P, b# H4 V
$ n! k* W8 s$ a5 A. \$ s2 |- r9 u# }: K  ?
收藏 评论0 发布时间:2021-11-9 17:00

举报

0个回答

所属标签

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