
1 软件程序设计 为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、 OS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟8 F) }& {- R! Y+ t 一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事 件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。 OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。 除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后 自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。# W3 M' ?$ E' s$ \4 r; J, | 2 运行过程/ U9 k, e% h$ q/ v! `) ~0 @# T1 q5 d (1) 使用MDK通过ULINK 2仿真器连接开发板,或使用两根USB电缆分别将CN1和CN5 与PC机USB端口相连 (使用板上自带的UlinkMe); (2) 打开实验例程目录RTX_Blinky下的RTX_Blinky.Uv2工程,将其编译链接后烧写到开发板中;, x* P9 j' J& f) b+ p$ r (3) 如果程序运行正常,LED1、LED2、LED3、LED4将轮流闪烁,其闪烁顺序与一个四相八拍步进电机 的相序一致;LCD上将会显示AD转换的值"AD value 0x****"; (4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。6 p0 `2 Z- m6 J2 X) C- f" O& T3 w |
RTX_Blinky.rar
下载579.29 KB, 下载次数: 432
RE:STM32 RTX多任务方式驱动LED灯 例程
RE:STM32 RTX多任务方式驱动LED灯 例程
RE:STM32 RTX多任务方式驱动LED灯 例程
assembling STM32F10x.s...
creating preprocessor file for Blinky.c... w, a, B+ u8 c$ e4 O1 W4 M' `
compiling Blinky.c...
Blinky.c(61): error: #130: expected a "{"
Blinky.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 "{"
Blinky.c: void phaseB (void) __task {
Blinky.c: ^3 c( V7 |6 k" ?
Blinky.c(85): error: #130: expected a "{"
Blinky.c: void phaseC (void) __task {0 M* o/ X! r- A# }1 _5 L
Blinky.c: ^
Blinky.c(97): error: #130: expected a "{"7 o+ `) \/ @4 d8 Z
Blinky.c: void phaseD (void) __task {
Blinky.c: ^
Blinky.c(111): error: #130: expected a "{"$ M# N ^9 Z% o% s2 [; G
Blinky.c: void lcd (void) __task {
Blinky.c: ^
Blinky.c(141): error: #130: expected a "{"
Blinky.c: void init (void) __task {
Blinky.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...
creating preprocessor file for Setup.c...
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);
Setup.c: ^
Setup.c(40): error: #20: identifier "DMA_Channel1" is undefined- N4 D0 E) h& S
Setup.c: DMA_DeInit(DMA_Channel1);
Setup.c: ^; X' v2 z8 |3 P# h( L6 @
Setup.c: Setup.c: 0 warnings, 2 errors
creating preprocessor file for STM32_Init.c...) ^8 ~4 ~7 B# o8 c8 |: t5 u
compiling STM32_Init.c...
creating 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: ^
RTX_Config.c: RTX_Config.c: 0 warnings, 1 error
creating 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
回复:STM32 RTX多任务方式驱动LED灯 例程
1 软件程序设计: L" ^9 G- |7 G ]: ^0 D* a9 O+ X
为了使用RTX以多任务的方式驱动LED灯的闪烁,设置5个任务OS_TID t_phaseA、OS_TID t_phaseB、
OS_TID t_phaseC、OS_TID t_phaseD和OS_TID t_lcd。其中前4个任务的作用是点亮某个LED灯,延迟
一段时间,然后通过设置标志触发另一个任务执行,再延迟一段时间之后,熄灭LED灯,等待下一次事2 Z! ]2 r' ~& ]! ~3 y
件标志的到来;通过这四个任务的循环触发可以实现四个LED灯循环闪烁,其延迟时间由ADC转换值决定。1 k) R. X/ _% Y K# z( f& `
OS_TID t_lcd用于将ADC转换值显示在LCD上,按固定时间间隔不断更新。
除了以上5个任务之外,还有init任务和idle任务,init任务用于创建以上5个任务,该任务在完成之后
自行删除;idle任务无需创建,永远存在,当系统无其他任务时执行该任务。
8 q, K* l; M: l) c! k# }+ r
2 运行过程
(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将轮流闪烁,其闪烁顺序与一个四相八拍步进电机
的相序一致;LCD上将会显示AD转换的值"AD value 0x****";: R' _* ~7 \% U& a0 _& u
(4) 调整电位器RV1,四个LED灯的闪烁速度将发生变化,LCD上显示的AD转换值也将随之发生变化。
8 e5 ` k6 s- z4 _9 }, d$ O
RE:STM32 RTX多任务方式驱动LED灯 例程
RE:STM32 RTX多任务方式驱动LED灯 例程
RE:STM32 RTX多任务方式驱动LED灯 例程
回复:STM32 RTX多任务方式驱动LED灯 例程
回复:STM32 RTX多任务方式驱动LED灯 例程
回复:STM32 RTX多任务方式驱动LED灯 例程
回复:STM32 RTX多任务方式驱动LED灯 例程
RE:STM32 RTX多任务方式驱动LED灯 例程
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_evt_wait (referred from blinky.o).
.\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).
.\Obj\Blinky.axf: Error: L6218E: Undefined symbol rt_tsk_delete (referred from blinky.o).
.\Obj\Blinky.axf: Not enough information to list image symbols.
.\Obj\Blinky.axf: Finished: 1 information, 0 warning and 7 error messages.: h' b+ ?% s4 ` |, Q1 `% B+ j! t
请问这是啥原因?我装了RL_ARM啊