rtos.h

来自「完全用C语言编写的C51单片机多任务操作系统,任务调度基于主动放弃,特别适合ST」· C头文件 代码 · 共 68 行

H
68
字号
#ifndef _RTOS_H
#define _RTOS_H


#define TASK_MAX	8
#define TASK_USER	3
/*TASK_USR <= 8*/
#if TASK_USER > TASK_MAX
#error "用户任务太多"
#endif

#define USR_EXR_MEM_TOP 0x3ff
/*用户扩展内存最大值*/
#define TASK_STACK_SIZE 128 
/*单个任务堆栈大小,至少14*/

#define TASKBLOCK 0
#define TASKRUN 1
#define TASKSLEEP 2 
#define TASKRDY 4




extern UCHAR data  SYS_STACK_BOTM;

#define get_stack_bottom() SYS_STACK_BOTM=SP/*获取系统堆栈底部地址,必须在主函数里调用*/


typedef struct {
	
	unsigned int task_stack_top;
	/*任务堆栈顶部*/
	unsigned char task_stack_len;
	/*任务堆栈深度*/
	unsigned char task_id;
	/*任务号*/
	unsigned int task_sleepcnt;
	/*任务休眠时间*/
	unsigned char task_stat;
	/*任务状态*/
	unsigned char ev_wait;
	/*任务等待事件 */
}TCB;







void task_init();
/*任务初始化*/
void task_sleep(uint time);
/*任务休眠 ,主动放弃CPU控制权,时间单位 毫秒*/
void start_task(void);
/*启动任务,在系统初始化完成后*/
void task_creat(unsigned int task,unsigned char taskid);
/*创建任务*/
void task_event_send(unsigned char taskid,unsigned char ev);
/*任务间通信 ,向指定任务号发送事件 */
unsigned char  task_event_wait(unsigned char ev);
/*等待一个或多个事件,返回该任务当前事件等待状态*/



#endif

⌨️ 快捷键说明

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