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

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

[复制链接]
废鱼 发布时间:2011-3-23 16:38
1 软件程序设计
7 j8 Q4 W( s$ D/ b2 Y+ J/ b6 ~为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
: Y4 _. j7 E+ g: D+ [& _3 }/ IOS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟8 F) }& {- R! Y+ t
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事
+ C$ P$ R% X, e9 o' g: |& @; N件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。
2 m& t8 z% k; }OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。
$ w) q4 N! b0 c( O除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后
2 P1 \) U* [! S0 }- P7 k* r0 Z9 Y自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。# W3 M' ?$ E' s$ \4 r; J, |

* g5 ?/ W, M% O" B4 m+ _2 运行过程/ U9 k, e% h$ q/ v! `) ~0 @# T1 q5 d
(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连
4 |6 K* f6 v, q# ^# d+ m0 v% v* D(使用板上自带的UlinkMe);
( a9 H. v" {) X7 O- b3 i(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;, x* P9 j' J& f) b+ p$ r
(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机
) J: o, C+ L: H9 ]" |- f  b的相序一致;LCD上将会显示AD转换的值"AD value 0x****";
) D% I* ?% x/ ?(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。6 p0 `2 Z- m6 J2 X) C- f" O& T3 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'8 H( Z% T, Y% Z: q6 t
assembling STM32F10x.s...
2 i/ s- ]+ w3 ^2 {creating preprocessor file for Blinky.c...  w, a, B+ u8 c$ e4 O1 W4 M' `
compiling Blinky.c...
, `8 e5 T0 \# M* _& NBlinky.c(61): error:  #130: expected a "{"
' l+ M& Y+ y0 x* P  QBlinky.c:   void phaseA (void) __task {0 g. g- I# M( {' i, h) _! L' ?
Blinky.c:                      ^2 O8 N1 X/ q' F/ E' a' Q
Blinky.c(73): error:  #130: expected a "{"
; x  u8 K0 c( C4 w; {, YBlinky.c:   void phaseB (void) __task {
+ x: s+ ^8 U2 r) X% CBlinky.c:                      ^3 c( V7 |6 k" ?
Blinky.c(85): error:  #130: expected a "{"
4 `; U' F8 }2 k& K& t8 eBlinky.c:   void phaseC (void) __task {0 M* o/ X! r- A# }1 _5 L
Blinky.c:                      ^
2 ~+ J' n  l1 hBlinky.c(97): error:  #130: expected a "{"7 o+ `) \/ @4 d8 Z
Blinky.c:   void phaseD (void) __task {
; E  [+ P# z6 N  dBlinky.c:                      ^
& c- D- M5 _  D8 w5 k) HBlinky.c(111): error:  #130: expected a "{"$ M# N  ^9 Z% o% s2 [; G
Blinky.c:   void lcd (void) __task {
0 ]9 D0 N3 c( p1 ZBlinky.c:                   ^
2 C/ ^  y2 h; N' DBlinky.c(141): error:  #130: expected a "{"
7 J# j3 G" v! Y- h) P# pBlinky.c:   void init (void) __task {
4 h! N/ ?' B" d3 P& V; F6 PBlinky.c:                    ^" n( i( ?2 [4 j! }
Blinky.c: Blinky.c: 0 warnings, 6 errors& C8 r8 [; ~3 F! J4 Z
creating preprocessor file for LCD_4bit.c...6 ?; B' J  @5 S, b2 o2 k
compiling LCD_4bit.c...
3 H' S, }- ~8 ]% g) x+ w' Screating preprocessor file for Setup.c...
5 \+ V' c) X& |: S' L0 O6 ~compiling Setup.c...! t' x8 C. s- l$ e
Setup.c(29): error:  #20: identifier "RCC_AHBPeriph_DMA" is undefined7 v% y. _: R& _, X3 X7 B
Setup.c:     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);
: c6 e! Q! c$ C8 eSetup.c:                           ^
& O% c7 i4 ?& E5 Q8 X- YSetup.c(40): error:  #20: identifier "DMA_Channel1" is undefined- N4 D0 E) h& S
Setup.c:     DMA_DeInit(DMA_Channel1);
: w2 @5 E( x) ~, n6 d3 _5 e: P$ ESetup.c:                ^; X' v2 z8 |3 P# h( L6 @
Setup.c: Setup.c: 0 warnings, 2 errors
& b/ Z, O' l+ d5 m  y4 b% r5 ~creating preprocessor file for STM32_Init.c...) ^8 ~4 ~7 B# o8 c8 |: t5 u
compiling STM32_Init.c...
* G- Y! A1 T9 v' G4 r# Pcreating preprocessor file for RTX_Config.c...% K/ m& W$ d5 c5 W
compiling RTX_Config.c...  I/ p: {$ F5 @7 f
RTX_Config.c(156): error:  #130: expected a "{"$ n8 U4 c" f0 t
RTX_Config.c:   void os_idle_demon (void) __task {! p& F* K2 L' M0 C  B
RTX_Config.c:                             ^
" V6 R0 X' @$ ?6 P# QRTX_Config.c: RTX_Config.c: 0 warnings, 1 error
! M* y3 Y" I7 @- H2 `' Xcreating preprocessor file for Serial.c...0 p6 X% c  \9 I; e( H' R: ~. G. t
compiling Serial.c.... U1 i1 l2 E! |
creating preprocessor file for Retarget.c...! D9 ^4 [0 e; L: \' M0 {7 q
compiling Retarget.c...- O, u" Z3 M- l( A% i" m2 v- E
Target not created
sdzhang1 回答时间:2011-3-29 11:35:36

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

回复第 1 楼 安 于2011-03-23 08:38:33发表:
: m6 Q# k! d, `, `4 ~1 软件程序设计: L" ^9 G- |7 G  ]: ^0 D* a9 O+ X
为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
0 s' s& _0 ]7 v2 QOS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟
7 t1 R9 s  q, G: n* P一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事2 Z! ]2 r' ~& ]! ~3 y
件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。1 k) R. X/ _% Y  K# z( f& `
OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。
% @/ c. |; F) X5 R1 O6 F除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后
6 h# U- w: G3 w1 g7 `+ H/ g自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。
9 L+ l* G' Z0 c$ L 8 q, K* l; M: l) c! k# }+ r
2 运行过程
# j9 u" L/ P, Q3 k(1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连1 O7 h9 X. C3 [+ H
(使用板上自带的UlinkMe); ) {4 _: R# @5 z3 v
(2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;  u* s0 d6 ]" B; X4 v2 Q; c9 b4 d
(3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机
' Z; W4 [. I. u- u5 y1 n; @: f的相序一致;LCD上将会显示AD转换的值"AD value 0x****";: R' _* ~7 \% U& a0 _& u
(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。
: z  Q) ?0 e0 B 8 e5 `  k6 s- z4 _9 }, d$ O
 
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).
) C6 f1 e1 c6 h# i3 u# Q6 \.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_evt_wait (referred from blinky.o).
. N1 `0 L* S0 [5 i$ \3 b.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_sys_init (referred from blinky.o).( \1 L/ I5 b( K! w3 S" E
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_create (referred from blinky.o).
: L$ m. t4 _* |( f/ W9 }' q' _.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_delete (referred from blinky.o).
$ l: d( y& H# Y4 O% Z6 y1 U- ~.\Obj\Blinky.axf: Not enough information to list image symbols.
) B2 y, u# E% U.\Obj\Blinky.axf: Finished: 1 information, 0 warning and 7 error messages.: h' b+ ?% s4 `  |, Q1 `% B+ j! t
请问这是啥原因?我装了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 手机版