3、每个线程都拥有一个事件信息标记,它有三个属性,分别是RT_EVENT_FLAG_AND(逻辑与),RT_EVENT_FLAG_OR(逻辑或)以及RT_EVENT_FLAG_CLEAR(清除标记)。当线程等待事件同步时,可以通过 32 个事件标志和这个事件信息标记来判断当前接收的事件是否满足同步条件。 如下图所示,线程 #1 的事件标志中第 1 位和第 30 ...
RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &e) == RT_EOK) { rt_kprintf("thread1: AND recv event 0x%x\n", e); } rt_kprintf("thread1 leave.\n"); } static void rt_thread2_entry(void *parameter) { rt_kprintf("thread2: send event3\n"); rt_event_send(&e...
/* Firing线程的入口函数 */static voidfiring_thread_entry(void*parameter){rt_uint32_t e;//接收到washing后才能firingwhile(1){if(rt_event_recv(&event,EVENT_WASH_FLAG10,//触发标志RT_EVENT_FLAG_AND,//任意方式RT_WAITING_FOREVER,&e)==RT_EOK)//永不超时{rt_kprintf("Firing OK!\n\r");rt...
1、event 事件集对象的句柄 2、name 事件集的名称 3、flag 事件集的标志,它可以取如下数值: RT_IPC_FLAG_FIFO 或 RT_IPC_FLAG_PRIO 返回值: RT_EOK 初始化成功 */ rt_err_t rt_event_init(rt_event_t event, const char *name, rt_uint8_t flag) 脱离事件集: /** 参数: event 事件集对象的句...
(rt_event_recv(&event, (EVENT_FLAG3 | EVENT_FLAG5), RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &e) == RT_EOK) { rt_kprintf("thread1: AND recv event 0x%x\n", e); } rt_kprintf("thread1 leave.\n"); } static void rt_thread2_entry(void *parameter)...
static rt_event_t wakeup_event; #define USER_INPUT "P004"#define LED2_PIN "P501" /* Onboard LED pins */ void rt_lptimer_init(rt_lptimer_t timer,const char *name,void (*timeout)(void *parameter),void *parameter,rt_tick_t...
1intmain(void) 2{ 3/* wakup event and callback init */ 4 wakeup_init(); 5 6/* pm mode init */ 7 pm_mode_init(); 8 9while (1)10 {11/* wait for wakeup event */12if (rt_event_recv(wakeup_event,13 WAKEUP_EVENT_BUTTON,14 RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR,15 RT...
@param option 取值为:RT_EVENT_FLAG_OR、RT_EVENT_FLAG_AND、RT_EVENT_FLAG_CLEAR @param recved 指向返回的已接收事件的指针 */ rt_err_t rt_event_recv(rt_event_t event, rt_uint32_t set, rt_uint8_t option, rt_uint32_t timeout, rt_uint32_t *recved) ...
/* 选择逻辑与或逻辑或的方式接收事件 */#define RT_EVENT_FLAG_AND 0x01 /* 逻辑与 */#define RT_EVENT_FLAG_OR 0x02 /* 逻辑或 *//* 选择清除重置事件标志位 */#define RT_EVENT_FLAG_CLEAR 0x04 /* 清除事件标志位 */ 当调用rt_event_recv()函数时,系统首先根据set参数和接收选项option来判断...
rt_sem_t rt_sem_create(const char *name, rt_uint32_t value, rt_uint8_t flag) 系统不再使用信号量时,可通过删除信号量以释放系统资源,适用于动态创建的信号量。 调用这个函数时,系统将删除这个信号量。如果删除该信号量时,有线程正在等待该信号量,那么删除操作会先唤醒等待在该信号量上的线程(等待线程...