⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lq51.h

📁 Keil 自带的 RTX51—Tiny 系统有这样几个缺点:1、非占先式任 务调度,这样系统的实时性就很难保证 2、提供的系统服务太少, 只有 wait 与 signal。而 RTX51—Tiny
💻 H
字号:
#ifndef	_LQ51_H_
#define	_LQ51_H_

#define LQ_VERSION		3000

#define	lqTimerTick		10000		/*定时器发生中断的时间间隔*/
#define Timer0_Data	-lqTimerTick
#define	lqRamTop		0x7F		/*堆栈栈顶位置*/
#define	lqMaxID			2			/*用户任务个数,即空闲任务ID号,这个值最大为7*/
#define lqFlgMax		1			/*标志事件个数,最多只能建立16个*/
#define lqSemMax		2			/*定义信号量个数,最多只能建立16个信号量*/
#define lqMsgMax		2			/*定义邮箱个数,最多只能建立16个邮件*/

#define LQ_DELAY_EN			0		/*任务延迟*/
#define LQ_FLG_EN			1		/*标志事件*/
#define LQ_SEM_EN			0		/*信号量事件*/
#define LQ_MSG_EN			1		/*邮箱事件*/
#define LQ_TASK_TMO_CHK_EN	0		/*任务超时返回检查*/
#define LQ_CHK_MSG_EN		0		/*检查邮箱是否有消息的函数 lqIsMSgEmpty*/
		
									/*任务状态的低四位表是这个任务正在等待那个信号量或邮件*/
#define	K_TMO			0x10		/*任务在一定时间内等待某个事件发生时,置位这个标志位。如果任务在等待某个事件而这位未置位,则无限等待改事件*/
#define	K_FLG			0x20		/*任务等待某一个标志事件*/
#define K_SEM			0x40		/*任务等待信号量时置位这个标志位*/
#define K_MSG			0x80		/*任务等待邮箱时置位这个标志位*/
#define MSG_TMO			0xFF		/*邮件事件超时返回*/

#define	B_TMO			4
#define	B_FLG			5
#define	B_SEM			6
#define	B_MSG			7

#ifndef	_LQ_IN_ASM_
/*********************************
/设置中断服务子程序的入口地址
/*********************************/
extern void ISR_Timer0(void);		/*定时器0中断服务子程序,这个不能改,是系统设定的*/
extern void Timer1_ISR(void);        /*定时器1中断服务子程序*/
#ifdef _IN_LQ51_C_
unsigned int code  lqISREnter[]={
	0,						/*0号中断入口函数,外部中断0*/
	ISR_Timer0,				/*1号中断入口函数,定时器0,这个不能改,是系统设定的*/
	0,						/*2号中断入口函数,外部中断1*/
	Timer1_ISR,						/*3号中断入口函数,定时器1*/
	0,						/*4号中断入口函数,串口中断SPI*/
	0						/*5号中断入口函数,定时器2*/
};
#endif
/*********************************
/中断服务子程序入口地址设置结束
/*********************************/

extern void lqStart(void);
extern void lqSche(void);
#define lqRunningTask()	lqCrt			/*当前正在运行的任务*/

#if	LQ_DELAY_EN
extern void lqDelay(unsigned char tmo);	/*任务延迟*/
#endif

#if	LQ_FLG_EN			/*标志事件*/
extern unsigned char lqWaitFlg(unsigned char index,unsigned char tmo);
extern char lqSendFlgISR(unsigned char index);
extern void lqSendFlg(unsigned char index);
#endif

#if	LQ_SEM_EN
						/*信号量事件*/
extern unsigned char lqWaitSem(unsigned char index,unsigned char tmo);
extern char lqSendSemISR(unsigned char index);
extern void lqSendSem(unsigned char index);
#endif

#if	LQ_MSG_EN
						/*邮箱事件*/
extern unsigned char lqWaitMsg(unsigned char index,unsigned char tmo);
extern char lqIsMsgEmpty(unsigned char index);
extern char lqSendMsgISR(unsigned char index,unsigned char Msg);
extern void lqSendMsg(unsigned char index,unsigned char Msg);
#endif

#if	LQ_TASK_TMO_CHK_EN		/*任务超时检查*/
extern char lqIsTaskTmo();
#endif

#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -