eventUnit.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef __EVENTUNIT_H
  2. #define __EVENTUNIT_H
  3. #include <stdio.h>
  4. #include <stdint.h>
  5. #include <stdbool.h>
  6. typedef struct
  7. {
  8. bool reload; //
  9. uint32_t count; //
  10. uint32_t countSet; //
  11. }eventParams_ts;
  12. /**
  13. * 调用周期:1ms
  14. */
  15. void eventDriver(void);
  16. /**
  17. * 设置超时事件
  18. * @mask:事件标志
  19. * @reload:=false,表示只执行一次
  20. =true,表示周期性执行,周期为:timeOut_ms
  21. @timeOut_ms:超时时间,或周期时间
  22. 备注:
  23. 1、执行前需先关闭中断,防止eventDriver()在定时器中断中执行冲撞
  24. **/
  25. void setEvent(uint16_t mask, bool reload, uint32_t timeOut_ms);
  26. /**
  27. * 触发单次事件
  28. * @mask:事件标志
  29. 备注:
  30. 1、立即执行该事件
  31. 2、执行前需先关闭中断,防止eventDriver()在定时器中断中执行冲撞
  32. */
  33. void event_post(uint16_t mask);
  34. /**
  35. * 清除事件
  36. * @mask:事件标志
  37. 备注:
  38. 1、执行前需先关闭中断,防止eventDriver()在定时器中断中执行冲撞
  39. */
  40. void event_clear(uint16_t mask);
  41. /**
  42. * 事件等待
  43. 备注:
  44. 1、该函数需要放在主循环中执行,获取需要响应的事件标志位,
  45. 传给getEvent(...)的event
  46. 2、执行前需先关闭中断,防止eventDriver()在定时器中断中执行冲撞
  47. */
  48. uint16_t event_pend(void);
  49. /**
  50. * 判断事件是否触发
  51. * @event:所有事件标志位缓存,由函数event_pend()产生
  52. * @mask:需要判断的事件标志
  53. */
  54. uint16_t getEvent(uint16_t event, uint16_t mask);
  55. #endif