LH_TaskManager.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef __LH_TASKMANAGER_H__
  2. #define __LH_TASKMANAGER_H__
  3. /*
  4. 文件说明:任务管理器源文件
  5. 作者: 刘浩
  6. 原创代码:使用请保留此段
  7. 更新日期:2020年3月27日
  8. 注意:本程序在项目实践测试过,能够正常稳定运行
  9. 目前支持MCU型号:STC Atmel stm32 stm8 msp430 cc2530 新唐 NXP pic
  10. */
  11. #include "system.h"
  12. #define TaskNumber 10 //定义任务数量
  13. #define ENABLED_INTERRUPT__ __enable_irq();//开启全局中断
  14. #define DISABLE_INTERRUPT__ __disable_irq(); //关闭全局中断
  15. struct LiuHaoTaskStruct ;
  16. typedef struct LiuHaoTaskStruct TaskList_Items;
  17. typedef TaskList_Items *LH_TaskList;
  18. struct LiuHaoTaskStruct
  19. {
  20. int Task_ID;//pic单片机需要用int 其他单片机用char即可
  21. int Task_Time;
  22. int (*_Fun)(void);
  23. LH_TaskList LIst_Next;//指向下一个列表项
  24. };
  25. void TaskManager_Init(void); // 初始化任务管理器
  26. void TaskManager_Scheduling(void) ; // 任务调度管理器 放到定时器中断里面 滴答计数 进行调度
  27. void TaskManager_Run(void) ; // 任务执行器 放到主函数执行任务函数
  28. void Add_WaitList(LH_TaskList LHpStack) ; // 进入等待态 添加待执行的任务
  29. void Add_TimingList(LH_TaskList LHpStack) ; // 添加任务到定时区
  30. void Add_SuspendList(LH_TaskList LHpStack) ; // 进入挂起态 添加任务到挂起列表
  31. /***********************************************************************
  32. 创建任务函数,将某个函数作为任务,可以完成定时调用等功能
  33. 参数:Task_ID:任务Task_ID,不能重复,否侧将创建失败
  34. _Fun: 用户任务函数名
  35. time: 创建后,延时time * 系统滴答时间 后执行 _Fun函数 ,如果是0,则暂时不执行,由Start_Tasks函数启动
  36. ***********************************************************************/
  37. char UserTask_Create(char id,int (*_Fun)(void),int time); // 用户创建普通任务
  38. /***********************************************************************
  39. 创建定时函数,延时time * 系统滴答时间 后,执行该函数*** 系统滴答时间一般由定时器定时一个10ms
  40. _Fun: 用户定时器任务函数名
  41. time: 创建后,延时time * 系统滴答时间 后执行 _Fun函数
  42. ***********************************************************************/
  43. char UserTimerTask_Create(int (*_Fun)(void),int time); // 创建定时器任务
  44. /***********************************************************************
  45. 让某个任务开始执行***
  46. id: 任务id
  47. time: 启动后,延时time * 系统滴答时间 后执行,如果为0,立刻执行
  48. ***********************************************************************/
  49. char Start_Tasks(char id,int time); // 启动(挂起)任务
  50. // 停止一个任务
  51. char Stop_Tasks(char id) ; // 将执行任务挂起(停止)
  52. // 删除任务
  53. char Delete_Tasks(char id) ; // 删除任务
  54. #endif