#define RT_EVENT_FLAG_CLEAR 0x04 /* 清除事件标志位 */ 1. 2. 3. 4. 5. 6. 当调用rt_event_recv()函数时,系统首先根据set参数和接收选项option来判断它要接收的事件是否发生: 事件已经发生,则根据参数option上是否设置有RT_EVENT_FLAG_CLEAR来决定是否重置事件的相对应的标志位。将发送的事件标志位填充...
1rt_err_t rt_event_init(rt_event_t event, const char* name, rt_uint8_t flag); 1. (1)入口参数: event:事件集对象的句柄。 name:事件集的名称。 flag:事件集的标志,它可以取如下数值:RT_IPC_FLAG_FIFO或RT_IPC_FLAG_PRIO。 (2)返回值: RT_EOK:成功。 4、删除静态事件集函数 当系统不再使...
调用接收事件函数rt_event_recv(),线程从事件对象 event 接收事件。 若事件对象 event 满足线程所感兴趣的事件,则根据接收选项 option 是否设置RT_EVENT_FLAG_CLEAR来决定是否清除事件相应标志位,并返回; 若不满足,则把线程感兴趣的事件 set 和接收选项 option 写到线程控制块,然后把线程挂在此事件对象的阻塞队列上...
1、event 事件集对象的句柄 2、set 接收线程感的事件 3、option 接收选项,可取的值为 #define RT_EVENT_FLAG_AND 0x01 逻辑与 #define RT_EVENT_FLAG_OR 0x02 逻辑或 #define RT_EVENT_FLAG_CLEAR 0x04 选择清除重置事件标志位 4、timeout 指定超时时间 5、recved 指向接收到的事件,如果不在意,可以使用 ...
(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)...
在RT-Thread 中,每个线程都拥有一个事件信息标记,它有三个属性,分别是 RT_EVENT_FLAG_AND(逻辑与),RT_EVENT_FLAG_OR(逻辑或)以及 RT_EVENT_FLAG_CLEAR(清除标记)。当线程等待事件同步时,可以通过32个事件标志和这个事件信息标记来判断当前接收的事件是否满足同步条件。
在RT-Thread实现中,每个线程都拥有一个事件信息标记,它有三个属性,分别是RT_EVENT_FLAG_AND(逻辑与),RT_EVENT_FLAG_OR(逻辑或)以及RT_EVENT_FLAG_CLEAR(清除标记)。当线程等待事件同步时,可以通过32个事件标志和这个事件信息标记来判断当前接收的事件是否满足同步条件。
当调用rt_event_recv()函数时,系统首先根据set参数和接收选项option来判断它要接收的事件是否发生: 事件已经发生,则根据参数option上是否设置有RT_EVENT_FLAG_CLEAR来决定是否重置事件的相对应的标志位。将发送的事件标志位填充到recved指向的标志变量中。
rt_event_recv(wificonn_event, WIFI_CONN_OK, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, RT_NULL); //创建时间同步,天气获取,网络云mqtt连接 msh_exec(mqtt_cmd, strlen(mqtt_cmd)); //exec mqtt msh_exec(ntp_cmd, strlen(ntp_cmd)); //exec ntp rt_kprintf("ntp and mqt...
while (1){/* 等待唤醒事件 */if (rt_event_recv(wakeup_event,WAKEUP_EVENT_BUTTON,RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR,RT_WAITING_FOREVER, RT_NULL) == RT_EOK){led_app();}}} int pm_test(void){ rt_thread_t tid = rt_...