123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #ifndef __EVENTUNIT_H
- #define __EVENTUNIT_H
- #include <stdio.h>
- #include <stdint.h>
- #include <stdbool.h>
- typedef struct
- {
- bool reload; //
- uint32_t count; //
- uint32_t countSet; //
- }eventParams_ts;
- /**
- * 调用周期:1ms
- */
- void eventDriver(void);
- /**
- * 设置超时事件
- * @mask:事件标志
- * @reload:=false,表示只执行一次
- =true,表示周期性执行,周期为:timeOut_ms
- @timeOut_ms:超时时间,或周期时间
- 备注:
- 1、执行前需先关闭中断,防止eventDriver()在定时器中断中执行冲撞
- **/
- void setEvent(uint16_t mask, bool reload, uint32_t timeOut_ms);
- /**
- * 触发单次事件
- * @mask:事件标志
- 备注:
- 1、立即执行该事件
- 2、执行前需先关闭中断,防止eventDriver()在定时器中断中执行冲撞
- */
- void event_post(uint16_t mask);
- /**
- * 清除事件
- * @mask:事件标志
- 备注:
- 1、执行前需先关闭中断,防止eventDriver()在定时器中断中执行冲撞
- */
- void event_clear(uint16_t mask);
- /**
- * 事件等待
- 备注:
- 1、该函数需要放在主循环中执行,获取需要响应的事件标志位,
- 传给getEvent(...)的event
- 2、执行前需先关闭中断,防止eventDriver()在定时器中断中执行冲撞
- */
- uint16_t event_pend(void);
- /**
- * 判断事件是否触发
- * @event:所有事件标志位缓存,由函数event_pend()产生
- * @mask:需要判断的事件标志
- */
- uint16_t getEvent(uint16_t event, uint16_t mask);
- #endif
|