LH_TaskManager.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #ifndef __LH_TASKMANAGER_H__
  2. #define __LH_TASKMANAGER_H__
  3. /*
  4. 文件说明:任务管理器源文件
  5. 作者: LiuHao
  6. 更新日期:2020年3月27日
  7. 模块功能:主要解决MCU裸机运行时,多任务管理,使程序能够很好的模块化设计,便于后期维护。
  8. 实现思想:参考了FreeROTOS操作系统时间片调度算法实现
  9. */
  10. #include "system.h"
  11. #define TaskNumber 10 //定义任务数量
  12. #define ENABLED_INTERRUPT__ __enable_irq();//开启全局中断
  13. #define DISABLE_INTERRUPT__ __disable_irq(); //关闭全局中断
  14. struct LiuHaoTaskStruct ;
  15. typedef struct LiuHaoTaskStruct TaskList_Items;
  16. typedef TaskList_Items *LH_TaskList;
  17. struct LiuHaoTaskStruct
  18. {
  19. int Task_ID;
  20. int Task_Time;
  21. int (*_Fun)(void);
  22. LH_TaskList LIst_Next;//指向下一个列表项
  23. };
  24. void TaskManager_Init(void); // 初始化任务管理器
  25. void TaskManager_Scheduling(void) ; // 任务调度管理器 放到定时器中断里面 滴答计数 进行调度
  26. void TaskManager_Run(void) ; // 任务执行器 放到主函数执行任务函数
  27. void Add_WaitList(LH_TaskList LHpStack) ; // 进入等待态 添加待执行的任务
  28. void Add_TimingList(LH_TaskList LHpStack) ; // 添加任务到定时区
  29. void Add_SuspendList(LH_TaskList LHpStack) ; // 进入挂起态 添加任务到挂起列表
  30. /***********************************************************************
  31. 创建任务函数,将某个函数作为任务,可以完成定时调用等功能
  32. 参数:Task_ID:任务Task_ID,不能重复,否侧将创建失败
  33. _Fun: 用户任务函数名
  34. time: 创建后,延时time * 系统滴答时间 后执行 _Fun函数 ,如果是0,则暂时不执行,由Start_Tasks函数启动
  35. ***********************************************************************/
  36. char UserTask_Create(char id,int (*_Fun)(void),int time); // 用户创建普通任务
  37. /***********************************************************************
  38. 创建定时函数,延时time * 系统滴答时间 后,执行该函数*** 系统滴答时间一般由定时器定时一个10ms
  39. _Fun: 用户定时器任务函数名
  40. time: 创建后,延时time * 系统滴答时间 后执行 _Fun函数
  41. ***********************************************************************/
  42. char UserTimerTask_Create(int (*_Fun)(void),int time); // 创建定时器任务
  43. /***********************************************************************
  44. 让某个任务开始执行***
  45. id: 任务id
  46. time: 启动后,延时time * 系统滴答时间 后执行,如果为0,立刻执行
  47. ***********************************************************************/
  48. char Start_Tasks(char id,int time); // 启动(挂起)任务
  49. // 停止一个任务
  50. char Stop_Tasks(char id) ; // 将执行任务挂起(停止)
  51. // 删除任务
  52. char Delete_Tasks(char id) ; // 删除任务
  53. #endif