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

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

[复制链接]
废鱼 发布时间:2011-3-23 16:38
1 软件程序设计$ s% h& L" B/ J  w# j
为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
' f+ U+ k# P: Z( B2 EOS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟
: h4 V7 ]) o$ `) U+ |9 b一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事
$ A8 \6 R. l& i件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。3 c. u* p1 ]0 m. M, Q2 o: ?
OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。
+ A: F, x5 V$ A' |7 P3 |4 m! x& g除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后! C/ l% G; T! W2 L, F9 O% Z% W! C
自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。
. f9 s. o8 h) |5 x   e& G. `0 j, q( ?
2 运行过程
7 i( L5 v# M& F9 C(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连
( B" b( P; D- C* z- f$ n1 S7 U(使用板上自带的UlinkMe);
! d. U; L0 }3 E( x7 P. d& j+ D; h(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;
& K3 \# \- a- W, j; `) G1 S( C(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机  w( a2 z6 ~2 i+ D/ }" d
的相序一致;LCD上将会显示AD转换的值"AD value 0x****";4 d* v! b9 _. k! Y7 w
(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。0 ?3 `  t* V& N% |

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'  g2 c0 A6 a( @; e1 a' J; F
assembling STM32F10x.s...
. P$ V1 {$ ~- W! N1 Zcreating preprocessor file for Blinky.c...
! I# U+ N2 e' ]- C4 [9 l' tcompiling Blinky.c...
  @6 f2 d8 E6 N7 Z8 V5 aBlinky.c(61): error:  #130: expected a "{"
( ?, t7 D$ x/ w) @Blinky.c:   void phaseA (void) __task {
  e, w$ b! R, Z1 F* r! V( ?Blinky.c:                      ^) ]  v8 p- }- M  f
Blinky.c(73): error:  #130: expected a "{"
! Q1 |$ R* z% e$ r- b% rBlinky.c:   void phaseB (void) __task {( ?3 s8 d8 z0 h" k" b
Blinky.c:                      ^7 n! O/ S1 u/ k; _& D2 R9 w4 o
Blinky.c(85): error:  #130: expected a "{"( a# R6 V0 k3 m$ v( `
Blinky.c:   void phaseC (void) __task {* A8 X) B$ }1 E# q2 U2 ~# t' S
Blinky.c:                      ^
2 \: L6 P4 }: V! i8 I! ~, DBlinky.c(97): error:  #130: expected a "{"
5 m7 j' u8 x4 L( \Blinky.c:   void phaseD (void) __task {$ Z# p. L7 P; Y5 N9 D3 F( d& h
Blinky.c:                      ^
" G: t% i0 I2 X) C8 J4 }7 s7 C5 dBlinky.c(111): error:  #130: expected a "{"
6 t2 J) v) \3 NBlinky.c:   void lcd (void) __task {
. I0 X/ t7 I, }! E) wBlinky.c:                   ^
/ E- P$ B: r/ C, DBlinky.c(141): error:  #130: expected a "{"5 g& _; n' h. _: R
Blinky.c:   void init (void) __task {
+ H- b; z# [  ]3 m# |Blinky.c:                    ^) A* F# O* z4 N
Blinky.c: Blinky.c: 0 warnings, 6 errors
7 ]: S; e* a* F* z- ]& ]5 k9 hcreating preprocessor file for LCD_4bit.c...
/ }3 K$ z! I% o+ _" R" U/ u2 y* tcompiling LCD_4bit.c...  E/ j: I5 C+ o
creating preprocessor file for Setup.c...# S% l' F. a( x  N
compiling Setup.c...
! `* A" Q0 R. I* y" VSetup.c(29): error:  #20: identifier "RCC_AHBPeriph_DMA" is undefined
- x( `4 g6 y3 k. G4 r& ?9 WSetup.c:     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);* n  J2 J" N8 V4 T3 _* N, }
Setup.c:                           ^
8 l9 R; X# x8 w) t" DSetup.c(40): error:  #20: identifier "DMA_Channel1" is undefined. G1 Z4 |0 v* j
Setup.c:     DMA_DeInit(DMA_Channel1);4 v& L- H0 [' N1 I- h
Setup.c:                ^
. n+ r7 m2 D6 @, MSetup.c: Setup.c: 0 warnings, 2 errors
! {1 T" u: |% P2 b- bcreating preprocessor file for STM32_Init.c...; _2 p+ k) \( J  i. p
compiling STM32_Init.c...
$ O5 }& E# X$ X2 N, xcreating preprocessor file for RTX_Config.c.... l* x( P7 }7 ~; y
compiling RTX_Config.c...
! S+ @3 _( s5 K0 n- s% ?* c* J; n# M2 sRTX_Config.c(156): error:  #130: expected a "{". F$ \4 k+ A3 o, l
RTX_Config.c:   void os_idle_demon (void) __task {/ P7 C" \4 ]: ^& b: L3 Q: g
RTX_Config.c:                             ^
6 k1 I" n' \  b) eRTX_Config.c: RTX_Config.c: 0 warnings, 1 error$ D8 C; ?  X7 F% E9 x
creating preprocessor file for Serial.c...
7 J/ V+ R  Q  V: P6 Acompiling Serial.c...
/ Y# Q. z7 J4 M$ X/ P! n2 [3 ucreating preprocessor file for Retarget.c...
+ r+ M$ P3 |6 |4 W- G, ~compiling Retarget.c...' Q( U( ]7 d$ F1 ~( l
Target not created
sdzhang1 回答时间:2011-3-29 11:35:36

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

回复第 1 楼 安 于2011-03-23 08:38:33发表:
" |, Y( D- `0 L( |+ A+ M' b1 软件程序设计
; l1 n6 m) [7 A& c. b7 j" |为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、6 D3 e, O) y4 C) a6 l7 R7 Z+ r1 K2 v
OS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟/ ]/ h- U1 Y# R
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事1 i1 M6 d4 n8 Y4 A$ t, m$ A
件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。
. V* G6 N+ O  j2 H& }' _# T4 ~OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。7 j8 O4 Q4 v# ^0 S8 T8 U# P
除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后
' f/ T1 y" ]8 @$ _自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。
# _  Y5 X0 |: Y9 d: ^ ) p- Y7 p) B( D: m( V- {
2 运行过程
; _% S% t( }3 Q% B(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连* O/ r# y& ~7 C! a, f
(使用板上自带的UlinkMe);
* }) X! C6 o# y; n' w(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;
5 B6 X. |* k" E(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机+ z8 z# i0 u. T' E
的相序一致;LCD上将会显示AD转换的值"AD value 0x****";, ]; ?7 o) ?, T; v1 |' M  N: {* D7 W
(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。
; b$ Y  o8 `8 m; B 
- e: T) r) c  V  I+ S 
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).8 d2 W1 k; N" ]8 g) e0 f2 G2 e! ]8 f' [
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_evt_wait (referred from blinky.o).: q9 ~2 ~! f" y% Z
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_sys_init (referred from blinky.o).& N2 A; ]7 P% S3 {* V
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_create (referred from blinky.o).# r9 V* ]+ E, Y. n  {; j, X7 K2 e
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_delete (referred from blinky.o).  W& t# q% ?3 m4 }$ K1 U
.\Obj\Blinky.axf: Not enough information to list image symbols." O2 k* l1 v% X9 i( p2 J8 Y
.\Obj\Blinky.axf: Finished: 1 information, 0 warning and 7 error messages.
6 O' Y3 I& t5 y6 p请问这是啥原因?我装了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 手机版