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

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

[复制链接]
废鱼 发布时间:2011-3-23 16:38
1 软件程序设计
$ B9 M2 P0 o5 [" Y$ y% h为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
  q  r0 ~# h( L: y2 }1 j2 ROS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟$ f& x! f9 U+ z9 K# X
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事
* K0 T3 T) N0 k: }$ b# [件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。
0 e  m. n5 z7 y8 |& g. z0 NOS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。
0 Y5 v% g( V0 S3 W1 x除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后
& j: m2 R3 `7 ^2 b9 d7 o自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。& M2 h' f9 W, A  Y, K: \1 |

* o$ R2 G' X; A* u8 B0 _8 q2 运行过程
: k5 j: |3 ^' k! n3 e5 e2 t(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连4 U- R# c2 ~  p* F
(使用板上自带的UlinkMe);
- Z# D8 F( b9 z* s" _5 b(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;+ z: h7 A' F4 Q! D( {7 N
(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机
: D, P7 t3 [( ^# D的相序一致;LCD上将会显示AD转换的值"AD value 0x****";! a! c8 g! d1 j2 E3 _7 {+ v
(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。  ~/ B; }( `) A. b% w, k" w

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'
5 D5 c9 l, S/ O: w* J" {+ D9 ?0 U7 `assembling STM32F10x.s...
8 x6 I9 v. N1 P  y) m! \creating preprocessor file for Blinky.c...
+ S0 N/ L9 w0 K% R7 mcompiling Blinky.c...$ K/ x& d) L) n0 e2 O( f
Blinky.c(61): error:  #130: expected a "{"
3 s. K# J! s4 Z0 d* `$ ~+ NBlinky.c:   void phaseA (void) __task {
$ P+ y, ^8 E& V0 j' D2 H" Y! HBlinky.c:                      ^
2 v; ]: v5 n) c7 ABlinky.c(73): error:  #130: expected a "{"
0 r7 c8 K. N+ {9 y" z8 J( [5 D8 ABlinky.c:   void phaseB (void) __task {/ R! U9 h4 ?8 X" g
Blinky.c:                      ^) D7 [0 Y/ Q! ^
Blinky.c(85): error:  #130: expected a "{"+ G& o4 n% |/ ?
Blinky.c:   void phaseC (void) __task {
5 X- P8 P5 E0 T& mBlinky.c:                      ^
3 Z$ `% _: p2 ]1 a" y0 O: Q9 `Blinky.c(97): error:  #130: expected a "{"2 w# S6 @3 l, B, s& S# I2 g3 f
Blinky.c:   void phaseD (void) __task {0 _5 _( j# l  }, c" z
Blinky.c:                      ^- k( e7 K4 ]" E
Blinky.c(111): error:  #130: expected a "{"9 r/ ~3 y% V2 m2 s$ D
Blinky.c:   void lcd (void) __task {
2 [* q8 H" r" F+ }Blinky.c:                   ^
7 Q0 T6 ^. o7 b% W- [& _( qBlinky.c(141): error:  #130: expected a "{"$ a+ i' _. L% c. Q
Blinky.c:   void init (void) __task {
5 c" j1 F$ q* X( M6 _# n% XBlinky.c:                    ^5 x) @9 u# W: y" Z4 ^3 I
Blinky.c: Blinky.c: 0 warnings, 6 errors: w6 L" f, [3 `, R' H; T
creating preprocessor file for LCD_4bit.c...
1 W; U& f1 B0 N; }compiling LCD_4bit.c...
, u6 Z1 X3 x/ r5 Ecreating preprocessor file for Setup.c...
$ P, K3 T# o6 kcompiling Setup.c..., T1 ^: g. V" v, J# R! `; _) i
Setup.c(29): error:  #20: identifier "RCC_AHBPeriph_DMA" is undefined
& w1 i( D# G. C4 x/ N" X( f$ V( ?Setup.c:     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);# o2 e9 L- r% ?! v: j5 |2 q7 e9 v1 z
Setup.c:                           ^+ c. @0 ~% t( r6 b
Setup.c(40): error:  #20: identifier "DMA_Channel1" is undefined! b, F6 n: A* Z* `2 H
Setup.c:     DMA_DeInit(DMA_Channel1);% `9 C+ }7 j. c! J$ ]8 E$ ?
Setup.c:                ^
! F6 B. B8 g9 w1 TSetup.c: Setup.c: 0 warnings, 2 errors
& n% C9 @4 E3 gcreating preprocessor file for STM32_Init.c...
6 h0 a( h9 m) Ucompiling STM32_Init.c...- Y! g0 F7 H8 ^/ [3 z" W
creating preprocessor file for RTX_Config.c...% n$ z. I% g5 _$ z; T
compiling RTX_Config.c...
2 ~+ i/ Y2 l+ l8 U9 x- A  ]) N6 IRTX_Config.c(156): error:  #130: expected a "{"% L2 R. h& X0 H
RTX_Config.c:   void os_idle_demon (void) __task {
$ r$ q8 P! w) r! L8 b7 _RTX_Config.c:                             ^
0 ~6 x5 a7 |+ t! G0 c5 G1 B# ZRTX_Config.c: RTX_Config.c: 0 warnings, 1 error0 I8 T/ q2 M  j
creating preprocessor file for Serial.c...; m: g% k' g( z1 f+ @4 \6 {
compiling Serial.c...8 \; m$ r/ B2 |0 s* v3 o  f9 @' I
creating preprocessor file for Retarget.c...
; e5 D1 l$ R2 \  t/ ]compiling Retarget.c...! l. z; k1 G! P
Target not created
sdzhang1 回答时间:2011-3-29 11:35:36

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

回复第 1 楼 安 于2011-03-23 08:38:33发表:
+ Q- |: G9 P" m( m  z1 软件程序设计$ f4 E' p  W/ ~- L. P% L: n" N$ K
为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
* o; E" }& T: B* k/ DOS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟0 i9 F" Q2 D% p& C2 v5 f$ a: s
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事8 V/ ?! W$ X' ?; E$ s  b5 {$ w
件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。( `! H! q* K% S0 e0 ]
OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。- K& P, \8 Q& r+ h8 l+ N
除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后- m) a6 [4 V* Y. Q! u
自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。
( S9 M2 I% i9 G5 x , U+ p$ u0 t# Y- m4 U5 o4 g0 v
2 运行过程
% h; U! n# j5 x4 e(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连1 D( Y1 C+ |7 C
(使用板上自带的UlinkMe);   W' [$ G+ [1 a+ G) N  m
(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;
, O7 f0 w! y, w4 X(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机8 K, ]; f: s# P9 y0 }& H4 W( z
的相序一致;LCD上将会显示AD转换的值"AD value 0x****";9 P' q: K' v: h+ p2 f
(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。
/ R; I4 v. _. K. `& |: U8 j 
$ a3 E3 V% l* S5 q! B' x- Q+ ]% ^! X 
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).  x0 B7 U: K& a* @+ \
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_evt_wait (referred from blinky.o).' S1 f: s+ F- s& y- V
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_sys_init (referred from blinky.o).+ o8 W) \3 [2 P* w
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_create (referred from blinky.o).
# [: E6 c& f! R. ]# |.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_delete (referred from blinky.o).( x3 q& M9 n/ U$ \# @
.\Obj\Blinky.axf: Not enough information to list image symbols.
; }5 e, a' |- a9 u5 \; O4 V" t.\Obj\Blinky.axf: Finished: 1 information, 0 warning and 7 error messages.
! L6 S* {, h: `' k% F5 S% B请问这是啥原因?我装了RL_ARM啊
长空利剑 回答时间:2015-1-7 22:21:04
有些许错误。。。。初始化结构体。。。。。
ldxywdg 回答时间:2015-1-7 22:33:34
1.jpg

所属标签

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