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

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

[复制链接]
STMCU小助手 发布时间:2022-10-27 19:56
1.创建好带有printf-stdarg.c的FreeRTOS的工程  q4 j) t& h0 n6 o+ b7 ~

3 P/ N7 |, g* U0 O2 Z$ X8 y2.修改main.c文件
8 L! W; A" r: |, r5 N& b  M
9 T9 U! S# w+ L7 ~$ f$ o
  1. /* USER CODE BEGIN Includes */; D$ k% \' W! c# M  H5 D) h
  2. & ]+ _  u: d: f0 \  i* H
  3. #include "FreeRTOS.h"
    0 w) \. o8 z' L$ \
  4. #include "task.h"
    7 c; C! B- O0 v. D' K, M
  5. #include "timers.h"3 @( o  R3 N, _
  6. #include <stdio.h>
    , E8 g  z- p6 I$ V" a7 x5 d% ?
  7. #include <string.h>7 O& \  W3 R) v

  8.   z4 F* p" S, T9 h
  9. /* USER CODE END Includes */; [, V  E% |( c: k
  10. /* USER CODE BEGIN PV */
      Q$ `4 e- X# @+ Y) D
  11. static TaskHandle_t AppTask_Handle = NULL;! X" y9 T1 E0 }; P2 p4 ]* S% \  _1 k* t
  12. static TimerHandle_t  Timer1_Handle = NULL;' ?' q( v# X, X; N0 g
  13. ! W2 i4 w& ^! E* t& X2 `
  14. extern int f_printf(const char *format, ...);
    3 _. W/ m: P/ l1 Z: K7 O, F+ o8 ^

  15. 8 H, r6 _+ w1 U, X/ {% J
  16. /* USER CODE END PV */
    * _0 K! C* C& `: N0 k" Y1 p
  17. / u$ K% p$ e7 b( |5 j
  18. /* Private function prototypes -----------------------------------------------*/. Y" W" @  E8 i" t# J0 N
  19. void SystemClock_Config(void);. B" l  J: m. j& @2 ?
  20. /* USER CODE BEGIN PFP */
    8 m+ q  A+ W; ^

  21. 1 L- Z4 h' B+ @: p- K% }
  22. static void AppTaskCreate(void);
    , t7 Y% k8 s" L4 V) R
  23. static void TimerCallback(void);
    ! X- v& X& M/ P3 d

  24. 6 a7 X& e( }) N6 m0 ^0 I
  25. /* USER CODE END PFP */; T: X; Y2 }7 d, U! a! P

  26. ; Y5 U. [1 _7 x
  27. int main(void)/ E! o" p7 {; w
  28. {
    5 @3 t. y$ C9 S8 N+ j  }1 J! ]
  29.   /*( N( {5 W0 q& c  E% u. w9 E
  30.    *9 h& F* l$ Q! {
  31.    */
    ! _' F0 c2 k( P. k' H; s
  32. * w2 F- v' D0 l5 e
  33.   /* USER CODE BEGIN WHILE */
    / Z5 h  Q5 m. H. m3 B
  34.   UBaseType_t xReturn = pdFALSE;
    , E: j7 ~( p0 `  b

  35. : n6 W! r9 ~% |& W! [2 B
  36.         xReturn = xTaskCreate((TaskFunction_t)AppTaskCreate,8 }; H* {# a! [2 x- }! R
  37.                         (const char *)  "APPTASKCREATE",
    ( ]3 E% ~7 F9 F) H3 P
  38.                         (uint16_t)      128,6 W3 y9 d( s4 X
  39.                         (void *)        NULL,
    ; I- O, F" `0 C6 i+ \* O
  40.                         (UBaseType_t)   1,; Y" P; N$ _! q5 D1 L% ?7 Y
  41.                         (TaskHandle_t *)&AppTask_Handle);! t* h2 A# _, j- Q. Z
  42. 7 F- {! y& J& d( T6 |0 B& L* }& \
  43.   if(xReturn != NULL)
    0 U* \6 F' h3 R" X2 D
  44.         {6 ~5 l# d+ E7 l' w4 F' q9 \0 @
  45.                 f_printf("Task Create PASS.\r\n");7 Y( T( e; O8 D
  46.                 vTaskStartScheduler();
    2 O; ?  O! s/ ^! r0 O. j  ]. \, A
  47.         }
    $ y, O( X% \, L! f2 I
  48.         ' R' j6 [2 z' d
  49.         5 d# B# s. q) [
  50.   while (1)8 {6 ~, O7 y2 Z' v- s9 I+ }* B' v
  51.   {, B. s% z" S4 _6 J* _
  52.     /* USER CODE END WHILE */
    + l; @5 T. R. u( ~5 p
  53. 5 T1 r4 X- Z* O2 e
  54.     /* USER CODE BEGIN 3 */' h" A/ j8 R' ?! x
  55.   }
    + p& U) ]& j8 I8 l- s
  56.   /* USER CODE END 3 */. a: c) t( A2 l9 n
  57. }: w! Q. f9 x: t2 K0 a- ^* {. U

  58. 3 u5 Z, ^1 r( u5 \# ]4 W

  59. 3 L' J' k* \( `; t1 C9 e. j# J  y
  60. /* USER CODE BEGIN 4 */* r) h6 t; L+ _/ R5 l
  61. static void AppTaskCreate(void)7 `! c0 i' ]; k( X0 w# l; Z" j
  62. {- k$ p5 I) N7 i# Z, m4 X
  63.         BaseType_t xReturn = pdFALSE;* `9 Z% v, l6 }: ?- \" B
  64.         
    : [/ s; [% I) x& ~, q
  65.         Timer1_Handle = xTimerCreate( (const char *) "TIMER1",(TickType_t)1000,8 G2 J& _7 L6 s* L+ f% ]8 p; f
  66.                           pdTRUE, (void*) 1,(TimerCallbackFunction_t)TimerCallback);8 i: s6 R$ B. Y( {3 o: N
  67.         
    3 I( Y' ~4 y* L. {; |# p0 z5 k
  68.         if( Timer1_Handle !=NULL). J9 H# R# |# ^/ d- F; _% S
  69.                 f_printf("Timer1 Create PASS.\r\n");1 O/ a* ~. y6 `4 F) N- T4 o4 {: m0 B
  70.         
    0 C3 B+ }$ ?# c
  71.         xReturn = xTimerStart(Timer1_Handle,0);/ w0 |* T8 t# l) W3 l/ E+ U
  72.         
    . ^+ s6 t% x6 |! r# Z/ M0 k" |! k
  73.         if(xReturn != pdFALSE)
    4 e; ^4 _! Y% N
  74.         {
    " [, U" X, j( @
  75.                 f_printf("Timer1 START.\r\n");" V& l* `5 g+ h5 o
  76.                 vTaskDelete(AppTask_Handle);% ?9 S/ E; j/ `* {( C  l
  77.         }) I: r8 Y' Z: E2 B5 H5 x- x8 w
  78.         
    8 B5 x; Y3 d: s+ Y2 f8 x: Y
  79. }
    # Y5 g- S! \. W2 q' p+ W
  80. static void TimerCallback(void)
    % e1 l; h" Q6 {3 O8 C4 K$ v
  81. {
    4 f, k1 k" D, E2 t) d0 E
  82.         HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    . J5 e8 G1 M% {8 O# x

  83. 6 M# u. R" R! S0 k
  84. }& K4 y* B+ J, @0 j: N
  85. /* USER CODE END 4 */
复制代码
& I8 T4 c6 h: W* W. p& m
' Z( t" M$ z9 ^* V2 `, {( O8 W
————————————————' M% T/ L; X" J1 S3 m
版权声明:SCCELE
) C% A$ a1 i; |
; c0 P4 k) g: e4 ^5 V9 W
赞 收藏 评论0 发布时间:2022-10-27 19:56

举报

0个回答

所属标签

相似技术帖

官网相关资源

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