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

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

[复制链接]
废鱼 发布时间:2011-3-23 16:38
1 软件程序设计; \9 F2 H3 X& S
为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
: \- Q4 a0 ?7 \( B, I7 {9 iOS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟% Y7 \2 J9 r* _  S- t
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事) S5 c6 N; \6 l% D1 S0 I* E* U; v' k
件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。
: C8 {% [7 H  \: LOS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。
/ `( w2 p3 z1 z( ]" Q7 L* c& G除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后5 `5 w% d0 X) K, w! ^
自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。7 K* k0 A2 n) k& D4 F

& `, U0 a6 m- i! ~7 R2 运行过程# N; }2 k. T# b. R) Q/ x, I) v
(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连
4 c% J, U  j- V, N(使用板上自带的UlinkMe); 3 u$ g# N& w- x# x/ |4 v9 B. _
(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;, n: y4 O7 J# c# b+ Z. Y( D
(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机7 ?6 \1 d# g: v% M5 y
的相序一致;LCD上将会显示AD转换的值"AD value 0x****";
# S& H) L1 I. X: Q(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。2 K7 V8 y$ w$ b

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'
3 `1 m( e: J; f3 Jassembling STM32F10x.s...
' o# K7 Y* l# R# q# t+ `creating preprocessor file for Blinky.c...
( u) C2 g# a' B9 _3 qcompiling Blinky.c...' C- k! L" S% V6 p# G6 R  d9 Y
Blinky.c(61): error:  #130: expected a "{"6 W; H6 z2 s+ Q; g3 m
Blinky.c:   void phaseA (void) __task {! y+ ]% n, N6 A' A, a
Blinky.c:                      ^2 l& }& r7 m3 l' C
Blinky.c(73): error:  #130: expected a "{"& h1 r* i" L" N7 I. C" u$ f
Blinky.c:   void phaseB (void) __task {1 Y/ |, [. \$ W. ]- F/ j5 k
Blinky.c:                      ^- r- q& H) x& q4 v
Blinky.c(85): error:  #130: expected a "{". H8 R! N& G" V0 k
Blinky.c:   void phaseC (void) __task {
, ], p# a$ Z/ sBlinky.c:                      ^+ S' o* T6 c$ s/ u0 L: E
Blinky.c(97): error:  #130: expected a "{"5 u; u+ Q6 r% M/ ~* j
Blinky.c:   void phaseD (void) __task {. {$ x0 i) e% P2 K! q& |; L; t
Blinky.c:                      ^
1 I" k/ g% @- I2 W" j& |' z; r: NBlinky.c(111): error:  #130: expected a "{"
2 u+ y7 n) H9 r  M2 K! y, j5 M8 ^7 TBlinky.c:   void lcd (void) __task {
6 L+ ~) m+ z5 k9 \, ~8 ?, xBlinky.c:                   ^" i' G$ ~% }9 k, b! ^4 G, b. s
Blinky.c(141): error:  #130: expected a "{"
! i( m: S' V1 mBlinky.c:   void init (void) __task {% o% s5 n3 |( a" @9 K
Blinky.c:                    ^
; E! _9 [6 K$ F0 T6 ?& L( P: {Blinky.c: Blinky.c: 0 warnings, 6 errors
" U9 [- G" j$ \) b) Gcreating preprocessor file for LCD_4bit.c...
# _. l- j/ J$ m4 v+ P) w: X3 Kcompiling LCD_4bit.c...
$ T3 @- J( R# z2 z$ {. R. L* i. L! ccreating preprocessor file for Setup.c...
" f- O! \5 ~; c9 z  a; U. H$ e, _compiling Setup.c...% y  d8 d6 R' i/ U+ ]
Setup.c(29): error:  #20: identifier "RCC_AHBPeriph_DMA" is undefined) C6 f) }$ T2 {; p- P) U$ \
Setup.c:     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);
* J, @; O" Y2 B: ^4 ZSetup.c:                           ^
6 @( t/ g  S' z+ z' \Setup.c(40): error:  #20: identifier "DMA_Channel1" is undefined
  ^  S3 y4 [- a/ h+ `: |% V& aSetup.c:     DMA_DeInit(DMA_Channel1);
5 L% E' Q# j! e: P/ J, N# aSetup.c:                ^
% {% H5 G. _% ^Setup.c: Setup.c: 0 warnings, 2 errors$ _. P9 O, m; _; o; Q; P/ u) R
creating preprocessor file for STM32_Init.c.../ R2 f5 x: j8 z% Y3 H" B
compiling STM32_Init.c..." s/ ~$ l# {3 H. U
creating preprocessor file for RTX_Config.c...4 z9 G+ n4 Z2 g/ U( O  Y5 A
compiling RTX_Config.c...
; I. |1 b/ E4 pRTX_Config.c(156): error:  #130: expected a "{"
2 C: j7 P4 D9 BRTX_Config.c:   void os_idle_demon (void) __task {! _  `9 S4 G- t. u5 }
RTX_Config.c:                             ^) o( g. `- b) `4 E6 ?- J$ {
RTX_Config.c: RTX_Config.c: 0 warnings, 1 error
4 M. Q5 N0 X4 D" jcreating preprocessor file for Serial.c...
' @9 w' x  j, ^  p: z) W( q0 icompiling Serial.c...# O1 }$ J; O) d0 }: W  G
creating preprocessor file for Retarget.c...- u- V% R9 I2 R6 {7 r% |. z, v
compiling Retarget.c...: `+ X; x; J" x1 D* x
Target not created
sdzhang1 回答时间:2011-3-29 11:35:36

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

回复第 1 楼 安 于2011-03-23 08:38:33发表:4 H# l. U3 n8 N/ Z* I4 j
1 软件程序设计2 q0 F' `$ y; X& m6 X. \  `
为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、9 x! t5 A) ]8 ^! \4 m! o/ H
OS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟- ]4 z4 ~& _1 k6 s
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事# b# h" \: y6 @9 V
件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。& {& J! [5 Z9 q! `$ [
OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。( T' u5 m3 }, q1 w! b4 O
除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后8 S2 o" {+ _6 ^8 O
自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。
) L* P8 w8 q5 Q- \9 v5 u 
5 c% F$ F4 k" c0 j2 运行过程
$ J1 C  w% j1 E(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连
  S- @; M" A& [" S6 z- r) W0 t(使用板上自带的UlinkMe);
, A0 J+ _1 Z: N$ `9 ?3 B* |% P(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;
& F  g) n9 l% r(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机
7 p+ O& n# x0 {- l* R0 |, O( R的相序一致;LCD上将会显示AD转换的值"AD value 0x****";
, b& z, z: E$ J& Q( B(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。
% J$ L( H' o) I8 n+ J; c5 E) z 2 v. H; N9 H5 _1 m# 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).
7 ^# S3 c" y, ?/ M9 ^9 J/ r7 `.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_evt_wait (referred from blinky.o)., D, s" p/ `; A. E
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_sys_init (referred from blinky.o).
+ r& q# t# U% v  y.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_create (referred from blinky.o).
: ]' U6 R2 |- u1 x8 s.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_delete (referred from blinky.o).
; o! d% \6 }- i2 i7 U.\Obj\Blinky.axf: Not enough information to list image symbols.
8 I. D) a0 L& U# k.\Obj\Blinky.axf: Finished: 1 information, 0 warning and 7 error messages.
, _1 o8 {4 n) D请问这是啥原因?我装了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 手机版