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

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

[复制链接]
废鱼 发布时间:2011-3-23 16:38
1 软件程序设计/ V1 H9 }! U+ e
为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
  R6 e& O7 l. i$ v  V1 n7 d5 u/ r5 mOS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟
4 K1 q7 e' U, c& t2 l一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事9 T2 W( X' c8 C5 X2 P8 Q3 H
件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。: o0 B4 v2 ]' c( y8 b) `0 Y
OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。& z' Y/ j' A$ W" ^. w( B
除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后
' o" q) F6 Z9 f% F  K自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。& s7 E1 w' ^- m

- g$ ^$ B. F! ?( U- D' M  P2 运行过程2 n& r- R# I. ^
(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连% C$ v9 D" ^$ K( H8 b
(使用板上自带的UlinkMe);
3 p- R! n8 t' k; l' g(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;  H& N( u8 p2 u
(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机
0 }/ J9 u' ^: g& l0 A8 D的相序一致;LCD上将会显示AD转换的值"AD value 0x****";/ _4 Z  @3 O: K* g9 V2 a& p
(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。5 z, c! @7 C/ Y4 M# |/ _: a' \

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'
( |2 f+ O/ h8 W5 rassembling STM32F10x.s...
' t4 U( ~- |% H' Rcreating preprocessor file for Blinky.c...
9 O  q$ \9 y, C- k. a* H! ocompiling Blinky.c.... ?" A) E2 u# N
Blinky.c(61): error:  #130: expected a "{"$ s+ x! c4 \! _2 y: v2 I5 k
Blinky.c:   void phaseA (void) __task {
" J1 ^% {2 g; P6 x" P- {Blinky.c:                      ^
# d4 ]8 e! ^- J2 _( `. LBlinky.c(73): error:  #130: expected a "{"
8 N) u! O5 @7 V/ dBlinky.c:   void phaseB (void) __task {+ r9 U  H. @# N& i
Blinky.c:                      ^
) _( L$ v( }( J) c% kBlinky.c(85): error:  #130: expected a "{"8 ?6 N+ }2 D& i7 P
Blinky.c:   void phaseC (void) __task {
4 O5 j& N7 t5 [9 A( {% m# ABlinky.c:                      ^7 _5 m% g  x$ O# S7 W
Blinky.c(97): error:  #130: expected a "{"+ W4 z/ E8 |9 C  ?3 b
Blinky.c:   void phaseD (void) __task {8 Z2 j1 `9 S6 x4 t) X
Blinky.c:                      ^
1 s8 `4 G  I* y0 S& X( l/ a9 pBlinky.c(111): error:  #130: expected a "{"
( S' @! C  @. E: U2 f8 nBlinky.c:   void lcd (void) __task {
3 Y+ U" Y4 w# }: I+ tBlinky.c:                   ^
% M3 E( f( A1 S! @Blinky.c(141): error:  #130: expected a "{"
6 ?3 T( y, ]) p5 B! b% v; CBlinky.c:   void init (void) __task {
! P; @" [2 u* |3 Q, U: Q% c5 M1 cBlinky.c:                    ^
" c# E5 a& a9 u2 N7 _! @, ^Blinky.c: Blinky.c: 0 warnings, 6 errors8 O) M2 L% [, e3 R8 e, t. P8 N
creating preprocessor file for LCD_4bit.c...
- U( |4 c4 m# L1 acompiling LCD_4bit.c...
2 r* {7 H! a) t8 t/ {1 X9 i- Zcreating preprocessor file for Setup.c.../ W* `  p+ y. h6 E
compiling Setup.c...
8 G0 h2 H1 A( KSetup.c(29): error:  #20: identifier "RCC_AHBPeriph_DMA" is undefined- C% ~# U% P+ g* Q* }/ V
Setup.c:     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);
" p7 B; z% Y1 E# LSetup.c:                           ^1 e6 H/ H8 C5 ?
Setup.c(40): error:  #20: identifier "DMA_Channel1" is undefined
; b' i; A9 K. r2 V# n3 ^- ySetup.c:     DMA_DeInit(DMA_Channel1);- A. A4 V' l0 j, o& j: M! v
Setup.c:                ^6 E# W4 H0 X7 n
Setup.c: Setup.c: 0 warnings, 2 errors3 ^# O& ^' L/ a5 ^
creating preprocessor file for STM32_Init.c...
; I& W( ?8 w5 [$ l# i5 j5 Zcompiling STM32_Init.c...) L3 h( z9 M' b" ^
creating preprocessor file for RTX_Config.c...
, q; G& M* \; }. k# j& P9 X7 K; E) Acompiling RTX_Config.c...
7 ?0 k# J$ C" [0 w2 ]RTX_Config.c(156): error:  #130: expected a "{"' r6 ~5 j: }4 g) @3 L
RTX_Config.c:   void os_idle_demon (void) __task {( Y7 h+ \) h: A& H) ]) V( u
RTX_Config.c:                             ^
+ Z+ }+ R6 a! d$ YRTX_Config.c: RTX_Config.c: 0 warnings, 1 error
% r  K, U; {2 k# l& m+ G1 R8 z. ocreating preprocessor file for Serial.c...
' l% A7 b' F/ G+ W$ N: ncompiling Serial.c...
; v- S$ U7 [5 u3 R& h/ zcreating preprocessor file for Retarget.c...) S9 r7 I- K- d; R
compiling Retarget.c...
& J5 Y2 i8 X7 i0 i" x* Z. r0 ~5 t3 oTarget not created
sdzhang1 回答时间:2011-3-29 11:35:36

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

回复第 1 楼 安 于2011-03-23 08:38:33发表:
% n1 x7 x! l5 u1 软件程序设计
1 y/ p& M; r! ]1 }9 r: B2 D为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、* \8 F6 q! C4 x* [
OS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟
7 _) p* a6 b. }4 }一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事
- U7 X; p" o, j! w5 p9 v. c件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。
. [6 g1 D/ |1 V" u2 A  j# S$ POS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。; e3 C6 X; _0 y
除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后
" c4 V. n. b% ~1 @9 q3 P9 I: S自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。; k' H' C% u( P7 J
 . h$ E! P, Z; l$ f7 ?) a
2 运行过程
* ~4 o" F/ K3 ~3 I4 c(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连
5 g& H( o7 @4 m, C(使用板上自带的UlinkMe); $ m; J, ]: q  W  M9 r7 H
(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;! P# z2 D5 g* o* v0 u" S; P$ a
(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机
: K/ ]" v0 N7 a' `  n的相序一致;LCD上将会显示AD转换的值"AD value 0x****";
/ m: N) H( o2 t, M. j; R0 v(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。* `1 ~( P3 i; F9 M9 i
 , Q! a5 H: `4 q
 
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).
- |5 a, M8 t. p( q% e. y& Q.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_evt_wait (referred from blinky.o).
( f3 u2 P3 A6 V" @( u+ [- g% O.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_sys_init (referred from blinky.o).% w0 R# b$ w$ R$ K8 R
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_create (referred from blinky.o).9 p6 S8 @( U* P6 T
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_delete (referred from blinky.o).
3 P, _3 w- d, f8 y( x2 k.\Obj\Blinky.axf: Not enough information to list image symbols.
* ~0 U$ ]' p2 o# Z.\Obj\Blinky.axf: Finished: 1 information, 0 warning and 7 error messages.) t- o) z# F; J2 S
请问这是啥原因?我装了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 手机版