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

STM32 RTX多任务方式驱动LED灯 例程

[复制链接]
废鱼 发布时间:2011-3-23 16:38
1 软件程序设计
6 W0 @& h$ L/ C: d9 C为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
3 n- A- a' N9 ]3 XOS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟  W6 {+ y/ {3 G) q, V+ U
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事7 Q' o5 u4 S% [  o  I7 \
件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。
4 h+ H% S7 Y  q& \% f$ d1 xOS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。; K" X0 G4 l6 A6 c
除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后* G# ~9 V/ W$ h$ C8 t. [1 g
自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。
( a" o2 }' J+ C; D9 [- [+ {5 ] ; I' H' a1 g/ H4 K, h. v$ a
2 运行过程) ~6 _: B$ f8 h( B! l; \
(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连5 n% z, d. a9 T' g& W, C/ Y4 ~
(使用板上自带的UlinkMe); 2 z4 ?, A; b+ G4 f# U# h3 e: n0 J6 q
(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;3 W. {; O) y  k4 r- d' O) e/ Z
(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机
+ I* i! T7 _" J/ }7 T9 Y6 r的相序一致;LCD上将会显示AD转换的值"AD value 0x****";
9 Q% d0 _( S; i5 ?(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。
% n- q0 s/ ?% A; j' D/ O

RTX_Blinky.rar

下载

579.29 KB, 下载次数: 432

赞 收藏 1 评论14 发布时间:2011-3-23 16:38

举报

14个回答
senzh01 回答时间:2011-3-29 08:29:59

RE:STM32 RTX多任务方式驱动LED灯 例程

还不错,大早就有收获!!谢谢了!!
zhouke58 回答时间:2011-3-29 09:26:54

RE:STM32 RTX多任务方式驱动LED灯 例程

编译没通过,有问题
zhouke58 回答时间:2011-3-29 09:28:18

RE:STM32 RTX多任务方式驱动LED灯 例程

Build target 'RTX_Blinky'
& u' K( C8 s1 L6 c5 ^assembling STM32F10x.s...
" P# j( B4 j) G& Ucreating preprocessor file for Blinky.c...
% J1 V9 k8 B$ f6 Z2 o# Gcompiling Blinky.c...9 X' \3 R; O" B( ~( \6 p% D$ Y
Blinky.c(61): error:  #130: expected a "{"1 U* a% S2 S# r# {
Blinky.c:   void phaseA (void) __task {* B2 [2 F! N; g& z. s2 }8 u
Blinky.c:                      ^
& F% t, p7 d$ F, }: OBlinky.c(73): error:  #130: expected a "{"5 u5 m, ^/ k: x* M) M6 K
Blinky.c:   void phaseB (void) __task {
; _( {4 n% X3 ^8 m' ~! R- bBlinky.c:                      ^5 ]8 i( h' S; u9 ~* N+ v0 d
Blinky.c(85): error:  #130: expected a "{"
+ G3 c+ B# _) r# H* yBlinky.c:   void phaseC (void) __task {
) }  [& ~  }2 Y' S9 p6 mBlinky.c:                      ^
8 h% ~5 @, q- {& u6 X+ H1 z/ D  o7 EBlinky.c(97): error:  #130: expected a "{"
8 A% C1 ~! F+ c* u. i$ ABlinky.c:   void phaseD (void) __task {
9 @* `& O3 t. a7 E! C; @; s( TBlinky.c:                      ^
( l: ?8 F! \- XBlinky.c(111): error:  #130: expected a "{"
" E" m0 V6 `1 w) a$ zBlinky.c:   void lcd (void) __task {
9 b' Z% T5 p  X  S6 P' K8 ABlinky.c:                   ^
4 k1 [0 v, k- f& W/ W2 {% C+ p7 CBlinky.c(141): error:  #130: expected a "{"2 z# t# h  N2 L, |0 l% i" }
Blinky.c:   void init (void) __task {
' H- e. `7 C1 W/ M$ Q. D" JBlinky.c:                    ^* }, e9 I) ~5 k% R2 X
Blinky.c: Blinky.c: 0 warnings, 6 errors: q" x5 y$ Y1 i) a! }7 C
creating preprocessor file for LCD_4bit.c...
( p; L- `' v  d- A+ ocompiling LCD_4bit.c...
% ?( p: o5 W  B" Ucreating preprocessor file for Setup.c...
1 _7 v4 v: k0 o0 E2 \' z9 r+ M; ^compiling Setup.c...+ }2 h8 B5 c/ t% e. w3 `
Setup.c(29): error:  #20: identifier "RCC_AHBPeriph_DMA" is undefined
" R2 ^7 `( ]" x* QSetup.c:     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);
2 t3 ]6 {7 X: \0 U9 M9 \* fSetup.c:                           ^3 w% ?  p5 q. j; M  k! o
Setup.c(40): error:  #20: identifier "DMA_Channel1" is undefined
, z' n1 K  f. Q6 l- l0 f6 ]Setup.c:     DMA_DeInit(DMA_Channel1);' g" P4 Y6 v8 S4 R% _* l6 v
Setup.c:                ^7 b$ p& }, \2 T6 f6 v4 z
Setup.c: Setup.c: 0 warnings, 2 errors5 C: B" R2 Y' R5 T6 x
creating preprocessor file for STM32_Init.c...
: P0 @; r1 W9 X% _& ^8 l8 Tcompiling STM32_Init.c..., o! L) X, R+ t$ i( K
creating preprocessor file for RTX_Config.c...
8 |/ u  ^+ U2 m. s# P( d% }& Z8 ?compiling RTX_Config.c...3 t. q& E! y% [! T4 J. ~7 H  T" |
RTX_Config.c(156): error:  #130: expected a "{". q- Y" |/ F' v) Z/ [- ~% `+ n
RTX_Config.c:   void os_idle_demon (void) __task {
" m: E  h/ r1 p: SRTX_Config.c:                             ^
) u" H  i# @1 y3 \5 ~% P: L/ b% D) [RTX_Config.c: RTX_Config.c: 0 warnings, 1 error" x. Q! v/ t, u. D  r: O
creating preprocessor file for Serial.c...
: _. V! o$ n' A0 M- H3 @compiling Serial.c...
0 ]/ Q2 C1 w3 Ucreating preprocessor file for Retarget.c...
& }# n) P" c' n7 u% i! u0 T; Ocompiling Retarget.c...0 a2 O) M3 m" \( i  `* I
Target not created
sdzhang1 回答时间:2011-3-29 11:35:36

回复:STM32 RTX多任务方式驱动LED灯 例程

回复第 1 楼 安 于2011-03-23 08:38:33发表:% b  N; a; {' j% x
1 软件程序设计
* U1 E( Q8 s# L为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、- m' L8 Q3 h1 Q7 f2 H1 n
OS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟5 f' y8 O/ v4 {$ V
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事
% X% {1 h8 y# S4 L) w5 C件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。& x. G: B. Q& A5 l* J& {
OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。
, Q+ x$ n" d6 k  k除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后+ K. G7 H4 N$ B  F
自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。
3 w% ]4 Q; F. Z0 h$ E( J' r 9 Z9 x# Y3 P3 b; }9 W4 V
2 运行过程
! T( p" w* W  S1 I  A+ Q+ q(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连
& n) m; u  N! r; X4 m; u* r(使用板上自带的UlinkMe); / N  \* g, h0 L) l- r0 w
(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;6 v8 C% e0 ]. c  W4 E9 M
(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机6 n* k* y, x) I
的相序一致;LCD上将会显示AD转换的值"AD value 0x****";
- f* R6 l# |  z(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。
6 B8 ], M" d; _) _8 c9 I5 \ . e, P$ V. x, H( S) K& ?* j" g( b
 
jwdxu2009 回答时间:2011-6-15 22:31:51

RE:STM32 RTX多任务方式驱动LED灯 例程

很有参考价值
yhb105 回答时间:2011-7-8 10:57:45

RE:STM32 RTX多任务方式驱动LED灯 例程

谢谢。收益良多啊。
nieyinghaha 回答时间:2011-9-23 11:45:45

RE:STM32 RTX多任务方式驱动LED灯 例程

编译通不过的,怎么办?
sinceac 回答时间:2011-12-16 12:50:21

回复:STM32 RTX多任务方式驱动LED灯 例程

看看这个可不可以用
胡杨-345459 回答时间:2012-6-28 16:26:01

回复:STM32 RTX多任务方式驱动LED灯 例程

我一直都是在stm32上跑裸奔代码的,现在让用RTX操作系统,怎么入门啊,没资料,没书,只有公司的一段代码,怎么才能创建一个基于这种系统的模板啊
cjq_sh 回答时间:2013-3-12 14:05:29

回复:STM32 RTX多任务方式驱动LED灯 例程

 很有参考价值
liuhu1919 回答时间:2013-12-13 13:19:13

回复:STM32 RTX多任务方式驱动LED灯 例程

谢谢
阿飞** 回答时间:2014-4-14 18:08:22

RE:STM32 RTX多任务方式驱动LED灯 例程

.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_evt_set (referred from blinky.o).0 z  Z7 g1 W$ m8 A+ P7 r  R( C
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_evt_wait (referred from blinky.o).
8 |' a3 [2 ?; I. x4 r0 C& r( }* s" p.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_sys_init (referred from blinky.o).& L, u+ k) E& R. E+ C- {
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_create (referred from blinky.o).
: t  z! k1 z" z7 g* b.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_delete (referred from blinky.o).% U& y2 X3 j, I* R3 o) _
.\Obj\Blinky.axf: Not enough information to list image symbols.
; f- P7 t+ F9 T# i# k0 j5 D.\Obj\Blinky.axf: Finished: 1 information, 0 warning and 7 error messages.0 ]. E. D% R9 H1 J
请问这是啥原因?我装了RL_ARM啊
长空利剑 回答时间:2015-1-7 22:21:04
有些许错误。。。。初始化结构体。。。。。
ldxywdg 回答时间:2015-1-7 22:33:34
1.jpg

所属标签

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