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

STM32G0学习手册——FreeRTOS软件定时器

[复制链接]
STMCU小助手 发布时间:2022-10-27 19:56
1.创建好带有printf-stdarg.c的FreeRTOS的工程$ ~" a& q( N, i

) R4 r. Q! I3 Y' ?2.修改main.c文件4 u" L1 \, Q, l0 `* o. G" P, Z

+ p9 Q; T& n. \' s4 _4 ?
  1. /* USER CODE BEGIN Includes */
    % @9 D7 J; ^& T4 K; d
  2. ! v! D& T- c2 S5 v+ P* m
  3. #include "FreeRTOS.h"
    ; C# x, b; |' m0 B2 \2 p% }: ^7 p' I
  4. #include "task.h"
    - X  R5 H# D, c7 A$ ^! q7 j
  5. #include "timers.h"! m: g) B8 e7 K4 R
  6. #include <stdio.h>
    $ \. ]! k0 H1 Q
  7. #include <string.h>, P2 N: |; @6 D' c( A' H

  8. % D+ u' f2 n# w$ ^: j- z7 t7 r
  9. /* USER CODE END Includes */* r7 s# I" _3 G7 c5 T
  10. /* USER CODE BEGIN PV */3 H* z( C, i  \3 G
  11. static TaskHandle_t AppTask_Handle = NULL;% L6 u3 }2 Z5 ]/ N- w$ E( s
  12. static TimerHandle_t  Timer1_Handle = NULL;1 u2 ^( S  {  W! V& |% ?
  13. 9 K  w  X5 u9 s* b8 z
  14. extern int f_printf(const char *format, ...);
    4 e; }+ L. E( A+ y9 X# B

  15. ( h& {7 Q4 F0 e* t% s3 Y3 d* h
  16. /* USER CODE END PV */+ d+ }2 A4 q' _

  17. 2 A/ N1 M2 x# J4 Z
  18. /* Private function prototypes -----------------------------------------------*/0 x% b6 r" e' p9 f) P
  19. void SystemClock_Config(void);, M7 k, Q2 R" E( k
  20. /* USER CODE BEGIN PFP */
      e+ w; ^" |- p% W% f$ g( \

  21. . a/ |' [6 C6 C
  22. static void AppTaskCreate(void);8 A' P- {' X2 t4 R
  23. static void TimerCallback(void);- C4 |" H: j- w
  24. + i# K$ p( f; B, I5 s
  25. /* USER CODE END PFP */4 F* W8 G, g: {; `  Z3 T
  26. ; u* X' x( o( r. M, c
  27. int main(void)
    8 v3 i; X$ y( S9 Y
  28. {
    + M4 E9 q; C$ d, r9 j, z. H! |0 Q
  29.   /*! \5 T% {0 `% l+ J# z
  30.    *
    3 ~) l8 m3 O/ S' A' q8 E! {! p
  31.    */
    + Z7 A9 ~) s+ n0 `5 @: w& {

  32. 6 W7 R" c" C* ?2 ]+ d. S! g6 v2 {
  33.   /* USER CODE BEGIN WHILE */& h7 z# p  F2 q2 J+ _
  34.   UBaseType_t xReturn = pdFALSE;
    0 J+ t/ q4 I- }# M- }

  35. 4 \  q/ T3 W0 Y  L' P  l
  36.         xReturn = xTaskCreate((TaskFunction_t)AppTaskCreate,7 {6 y8 A0 p3 v! c% E0 d
  37.                         (const char *)  "APPTASKCREATE",
    2 T, w. F: E+ O$ ^2 m
  38.                         (uint16_t)      128,3 l$ @5 v- e2 D1 j
  39.                         (void *)        NULL,5 F8 q# o" T) A+ V2 H7 W8 k
  40.                         (UBaseType_t)   1,2 T0 ~6 A, _& Y: o5 X5 x; X- l/ {
  41.                         (TaskHandle_t *)&AppTask_Handle);7 B, ^# o' q# S* Z8 a* M
  42. 4 }/ d2 f1 r9 Z! Z" w+ q
  43.   if(xReturn != NULL)
    2 |! n/ F* O: o# c1 M8 l
  44.         {
    6 o( m( r% j: w
  45.                 f_printf("Task Create PASS.\r\n");
    0 Z7 O, j5 M- R1 L; n
  46.                 vTaskStartScheduler();! k" j) l- f% q+ g+ x, N
  47.         }: f( L, {, l: O+ ?: h
  48.         ! `0 ]  R& U# o
  49.         
    ) }$ `- w; T  m2 P- _% R
  50.   while (1)/ a2 c6 h) r+ Z9 r0 n9 T
  51.   {
    : v8 k& R3 y9 X; ?& P
  52.     /* USER CODE END WHILE */
    7 f0 y$ Z5 t5 a% P7 b. ^9 O" y. W+ \, x; v
  53. ' R; U  b! ^( V  s; t9 D: A, V
  54.     /* USER CODE BEGIN 3 */; f+ {& }& W! ?! ~
  55.   }
    ! Q9 c! N/ d1 @# C
  56.   /* USER CODE END 3 */! j" |4 Y  I1 g/ w/ H# t
  57. }5 M) @" _, }# k. f: D$ V
  58. " o$ h. {3 V. r+ g

  59. 3 K6 T0 k3 w' j
  60. /* USER CODE BEGIN 4 */( r# B" [2 H2 R# O; w
  61. static void AppTaskCreate(void)9 z4 Q: K6 B$ N4 s. T( g
  62. {
    - z7 u5 P6 D7 ^: j' w
  63.         BaseType_t xReturn = pdFALSE;
    ! O3 _' Y. |, B) M& h
  64.         
    $ K) v- k6 h( ~' U+ w8 T! j& C
  65.         Timer1_Handle = xTimerCreate( (const char *) "TIMER1",(TickType_t)1000,* y" ?' K5 S/ v% ~8 |3 \! I: A
  66.                           pdTRUE, (void*) 1,(TimerCallbackFunction_t)TimerCallback);
    ; i% e5 K9 }1 W& I9 Q  y
  67.           u: g1 `) |( m2 Z+ a
  68.         if( Timer1_Handle !=NULL)3 N1 f5 J' m+ c7 b* I2 N
  69.                 f_printf("Timer1 Create PASS.\r\n");- S, G& t. v3 `3 M$ |0 W
  70.         ' r$ F! |2 {) [3 o
  71.         xReturn = xTimerStart(Timer1_Handle,0);, A" j, v; E8 f4 l0 {$ w; e
  72.         7 J" n5 P8 g5 b' m" a
  73.         if(xReturn != pdFALSE)% J. a# a6 o! F& T! y
  74.         {
    + j  V! @1 E/ P  Y, I. h
  75.                 f_printf("Timer1 START.\r\n");4 v/ a5 h- m" n6 Z: c5 C3 U# G
  76.                 vTaskDelete(AppTask_Handle);. [/ F8 G$ Z# U% t% G2 x' r
  77.         }7 Q. _8 F, X, R! N
  78.         7 {# G; [3 V/ @: L$ l9 }  N& T7 w$ D
  79. }* F3 O" f8 w  t( L4 S1 J
  80. static void TimerCallback(void)( R+ K- n8 A. l% U, P
  81. {6 q" m7 v) B# K7 d8 }( y3 {
  82.         HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    4 b) \* u  N# j7 W! F/ v
  83. 1 n/ Q1 b+ x, V) w; t
  84. }
    3 H2 f3 E" [; L
  85. /* USER CODE END 4 */
复制代码
! \/ A% c% X) R, \: M" g6 q

. i. |( A, U* e————————————————
, `1 v& }; L& i版权声明:SCCELE8 a+ h0 y. n) N2 Q7 K0 m

$ M8 f: @- W, G% j8 I, f
收藏 评论0 发布时间:2022-10-27 19:56

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版