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

【STM32F429心得\疑问】+最新FreeRtos(版本8.0)上手指南

[复制链接]
52mcu 发布时间:2014-4-21 21:16
【STM32F429心得\疑问】+最新FreeRtos(版本8.0)上手指南
( J* F, V0 T; ?0 c4 T2 k* D5 @5 X最近折腾一块stm32f107rc的板子,摸索了一下FreeRTOS 的使用
7 A7 v+ o2 e% a  D发现起步不太难有点经验和大家分享。
: ~. `* d; x. p  }1,先从官网http://www.freertos.org/下载 FreeRTOS 8.0.0 : V# Y" I2 ]5 ?
2,用标准库(STM32F10x_StdPeriph_Lib_V3.5.0)模板建工程) i! o- Z' ~* h5 }- F2 ]8 d: ]
3, 在工程中添加FreeRTOS 文件。tasks.c  list.c queue.c heap_2.c# g9 g% h( u: z. V/ ?
   port.c  其中port.C是cotex M3的移植文件。选择目录..\..\Source\portable\RVDS\ARM_CM3\8 {1 r+ G) e) O: d+ c0 E* U+ L
   下的port.c
4 _* a4 W. H5 E* |: G' F' C) K 
! p) p$ {3 Y9 z3,修改启动代码(.s文件)如下,主要是链接FreeRTOS的三个中断函数
2 u) g! T) ?7 g# I& t$ S5 G) }% x# V + N6 j8 _! T9 b; J
                                IMPORT xPortPendSVHandler4 N; w/ F1 R6 E! d1 l& b
                                IMPORT xPortSysTickHandler/ X4 i( \" C0 V( N* s! m
                                IMPORT vPortSVCHandler
7 `/ j& C/ R/ K* ]0 u8 A                                .....* P8 R  t3 m* R7 Y! \9 v+ H0 S
                                DCD     vPortSVCHandler           ; SVCall Handler& J! ~* b/ p' |- e
        DCD     DebugMon_Handler          ; Debug Monitor Handler
: A' }3 u3 ?9 `2 w" K) ]" }        DCD     0                         ; Reserved
% r. h; d- w) @- K* x        DCD     xPortPendSVHandler        ; PendSV Handler2 o0 ]) l9 S$ e1 V9 D. r8 o
        DCD     xPortSysTickHandler       ; SysTick Handler                       
- d6 H* o& [, t) z% T                                9 Q) ]' {# p- `) u  o/ m% e5 o
4.在main中建立自己任务开始 rtos
# S( L5 _9 }4 ^ 
4 ~9 e1 D) [- J. f5 S1 [  /* Create one task. */
1 X6 Q! R" {/ H+ i1 h    xTaskCreate(    vTask1,     /* Pointer to the function that implements the task. */& o3 G' w6 h( ]. M$ X) `& I  f
                    "Task 1",   /* Text name for the task.  This is to facilitate debugging only. */
4 t! M4 q! T! {- }6 S9 v                    200,        /* Stack depth in words. */
* D/ I1 `- K1 t' f; m( W                    NULL,       /* We are not using the task parameter. */8 c& K2 @6 F& j0 Z+ `
                    1,          /* This task will run at priority 1. */
$ Y6 _% h0 e; v+ s) w2 Z3 ]" d                    NULL );     /* We are not using the task handle. */4 r1 p' u0 S' z. F7 k. s9 C/ c# ~
 
9 S* k2 V0 {- X) I" {8 q: j    /* Create one task. */" e% c2 C& X! k( o* D
    xTaskCreate(    vTask2,     /* Pointer to the function that implements the task. */# V: Z/ W" L9 E" I1 e
                    "Task 2",   /* Text name for the task.  This is to facilitate debugging only. *// I. b4 r- G! {, z2 F/ B
                    200,        /* Stack depth in words. */* I$ ?& P) D* K
                    NULL,       /* We are not using the task parameter. */
8 B0 k) m( G" a) X                    2,          /* This task will run at priority 1. */' p" u: I4 F- U. L# Y( \) f
                    NULL );     /* We are not using the task handle. */) C/ y# y8 n* J- R; T; v- J
 
, F" X0 N0 u* [! y/ ~7 k6 A    /* Start the scheduler so our tasks start executing. */& u9 `% @7 h) ^& X4 m) w  v) p3 r# b
    vTaskStartScheduler();' w, c) s  ?( ?" }  t
..............
7 _1 R8 Z: H+ B- M- A9 [- p6 H..............; s0 k! [0 q- o5 {( h8 Z0 b% H) ^! D+ R
 
2 J( _3 [. t; x' q  ?% uvoid vTask1( void *pvParameters )
) i4 @  A2 z1 i5 {) l{# y1 }/ q9 N6 u4 w' Y
    /* As per most tasks, this task is implemented in an infinite loop. */8 c& h( X7 D, Q( F  o
    while(1)6 G8 d2 Y3 d( g0 O) m, z
    {1 U+ f4 s2 B" z) x5 @
        LED_Toggle(0);
9 X; o  n7 Q. S; T  c                LED_Toggle(2);+ j- J! N5 C) Z6 p
        vTaskDelay(800);4 o5 \7 M* ]* U0 ^) u7 E
    }6 ^1 n& o' r0 }7 F
}
( D- Z8 `* Y' O  z' D 
% f2 u: _' V7 M# r) ~$ Nvoid vTask2( void *pvParameters ). |% q- L" U& v% i& q8 ]5 a
{
  V1 t' [- R. z% }( l, G! G    /* As per most tasks, this task is implemented in an infinite loop. */
/ l5 H$ U# F  ~' H. X( v    while(1)
; G+ q2 ]4 G4 ]7 Z0 ]    {
- |1 o4 C% Y+ ]3 H8 t. g6 T; O7 `        LED_Toggle(1);
3 J  _, e# M1 [5 k( P                LED_Toggle(3);
: U9 _; V- \! B& y        vTaskDelay(1600);
1 n/ V8 B" d9 c0 r/ u' y) C    }
& Z/ f. P+ s9 V, K; a9 D4 f1 v}
收藏 1 评论0 发布时间:2014-4-21 21:16

举报

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