|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
>51单片机多任务系统的工程模板<. n7 E. D( R- g: D
( J7 U" x2 x4 p. X$ x5 ` u6 {( e* h6 z, l+ y3 r
RTX51-Tiny是一种实时操作系统(RTOS),可以用它来建立多个任务同时执行的程序。
L, A* V& `1 `$ j) z+ K, K$ Q) G2 Q
参 数
. k9 \; G0 x1 k: T | 范 围! b/ E/ M5 l' P7 ]) m
| 最大任务数/ \2 x6 u0 W2 D+ w' t9 ^1 [+ S
| 16+ m) ~9 ]3 g2 v' j1 x4 H
| 最大活动任务
& P9 u; C5 F0 c5 a | 168 J% g8 ?* v; {, I" \" G
| 代码空间需求
; g$ N7 [& K$ Q | 900字节最大
3 f H8 Q6 X7 s( r0 F | 数据空间需求% R$ s( d0 m2 F' `; h
| 7字节
* \. Z; x" [# ^5 |: u+ X3 {+ G | 栈空间需求; p, F% W! }5 o9 q* v( L; E
| 3字节/任务( c( g" U+ `; p' Y
| 外部RAM需求
1 y0 o5 j) N/ g3 n" M2 | | 0字节8 m; R( s! B2 z' Z, f
| 定时器
3 x2 A% E2 w3 J, J/ O! [; U$ h | 0& s( A' T1 n4 a2 T
| 系统时钟因子& g( a$ v6 ^, B: }7 n2 s% X2 l, D5 j
| 1000~65535
8 c" |5 M: x4 z5 x | 中断等待
! q2 @) p* w/ }7 j | 20个周期或更少4 c( y, R- U0 g+ k3 g8 a2 R, V( Y% p4 X
| 上下文切换时间3 |% I* j* M1 K* Z
| 100~700个周期" E8 ?" a# Y0 v0 S, H: g5 ]
|
_& M: J# M/ X3 H7 d4 O, c( v+ [单片机源程序如下:- #include "main.h"
- int flag = 0; //LED标志位
- /*--------------------------------------------------------------------------------------------
- 初始任务
- --------------------------------------------------------------------------------------------*/
- void task_create(void) _task_ 0
- {
- UGL_Delay(0); //延时没有用(防止编译器警告)
- os_create_task(1); //创建任务1
- os_create_task(2); //创建任务2
- os_delete_task(0); //删除任务0
- }
- /*--------------------------------------------------------------------------------------------
- LED任务
- --------------------------------------------------------------------------------------------*/
- void task_led(void) _task_ 1
- {
- while(233)
- {
- if(flag)
- {
- os_wait2(K_IVL,50); //系统延时50个Tick
- LED = ~LED;
- }
- else
- {
- LED = 1;
- }
- }
- }
- /*--------------------------------------------------------------------------------------------
- 按键任务
- --------------------------------------------------------------------------------------------*/
- void task_switch(void) _task_ 2
- {
- while(233)
- {
- if(!S2) //下降沿生效
- {
- while(!S2);
- flag = 1;
- }
- if(!S3) //下降沿生效
- {
- while(!S3);
- flag = 0;
- }
- os_wait2(K_IVL,1); //系统延时1个Tick
- }
- }
1 T9 Z4 ~* t1 V, o
, M- Z+ u$ s! {1 `8 s |
|