先搞个协作式的HotTask51,太累了~~~
但愿能赶上“节日”,早点给情人们穿上“皇帝的嫁衣”~~~
也算是农民伯伯的一片心意~~~~
真后悔自己早生20年!!!!!!!!
苍天不公呀!!!
俺那时为何不知有此节日???实在是雷翻了俺~~~
//任务枚举参数 enum _HotTask_enum_ { HotTask_Idle = 0,//HotTask51系统空闲任务,标准用户空闲任务 HotTask_User0 = 0,//特殊扩展用户看门狗任务(在bPriority[7].0中) HotTask_User1 = 1,//最低1级标准用户 HotTask_User2 = 2,//2级标准用户 HotTask_User3 = 3,//3级标准用户 HotTask_User4 = 4,//4级标准用户 HotTask_User5 = 5,//5级标准用户 HotTask_User6 = 6,//最高6级标准用户 HotTask_User7 = 7,//特殊扩展用户空闲任务(在bPriority[0].7中) HotTask_Init = 7,//用户任务装载即系统根任务,标准用户看门狗任务 HotTask_Wdt = 7,//HotTask51特有的软件看门狗任务 HotTaskMaxCount = 8//最大任务个数 };
/* HotTask51系统接口说明 1. 数组bPriority[8] bPriority[0].0 系统空闲任务位 1~7位为扩展低级用户任务位 bPriority[1~6].0~.7 标准用户任务可变级别位(1~6级可选) bPriority[7].7 系统看门狗和用户装载任务 0~6为扩展高级用户任务位
故HotTask51拥有8+7+7=22个任务
它分别用一个横向字节表示某任务,纵向某任务位得到信息 它有2个作用 a.同级任务优先的循环选择 主要控制6个用户任务优先级的测试 b.6个用户任务可否各自取代系统空闲任务及看门狗任务 它主要是扩展HotTask51只有6个用户任务之缺点 */ #define interface typedef struct//HotTask51系统接口 interface _HotTask_Struct_ { volatile unsigned int iHotTaskSystemStart;//0x55aa系统上电测试变量 //同级任务循环扫描号 volatile unsigned char iPrioTest;//用于同级循环 //当前任务号 volatile unsigned char iTaskTick;//节拍中断断点任务序号 //任务指针 unsigned int pPoint[HotTaskMaxCount];//系统标准定义任务函数入口 //任务级别 在HotTaskTick()中用于同级任务循环扫描 unsigned char bPriority[HotTaskMaxCount]; //任务记录 unsigned char bRecord[HotTaskMaxCount]; //任务锁 unsigned char bHotTaskLock; }HotTask_Struct;
|