#ifndef __EVENTUNIT_H #define __EVENTUNIT_H #include #include #include 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