rt_event_recv(eventGroupHandle, EVENT_1_BIT, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER);报错too few arguments in function call
时间: 2023-07-22 18:31:16 浏览: 176
根据你提供的信息,我猜测你使用的是 FreeRTOS 中的函数 rt_event_recv(),该函数的原型为:
```
rt_err_t rt_event_recv(rt_event_t *event, rt_uint32_t set,
rt_uint8_t option, rt_tick_t timeout);
```
该函数需要传入四个参数,分别为:
- event:事件控制块指针;
- set:要等待的事件位;
- option:等待选项,可以使用 RT_EVENT_FLAG_OR 或 RT_EVENT_FLAG_AND,表示等待任意一位或全部位被设置;
- timeout:等待超时时间,可以使用 RT_WAITING_FOREVER 或 RT_TICK_MAX 表示无限等待或最大等待时间。
根据你提供的报错信息,我猜测可能是你没有传入完整的参数导致的。请检查一下你调用 rt_event_recv() 函数时传入的参数是否完整,是否与函数的要求一致。
相关问题
(rt_event_recv(&event, 1, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_TICK_PER_SECOND,&e) != RT_EOK)啥意思
这段代码是在 `rt_event_recv` 函数的基础上增加了一个参数 `&e`,用于返回等待到的事件掩码。如果函数返回的值不等于 `RT_EOK`,则表示等待事件失败,否则表示等待事件成功,并且等待到的事件掩码会被存储在 `e` 变量中。
整个代码的意思是等待 `event` 事件的发生,等待的条件是任意一个事件的发生,并在事件发生后清除事件标志,如果等待超过了 `RT_TICK_PER_SECOND` 个系统节拍时间仍然没有事件发生,则函数返回 `RT_ERROR`,等待到事件后,返回 `RT_EOK`,并且事件掩码存储在 `e` 变量中。
if (rt_event_recv(&event, 1, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_TICK_PER_SECOND) != RT_EOK)如何理解这句代码
这段代码是嵌入式操作系统 RT-Thread 中的事件等待函数 `rt_event_recv`。它的作用是等待一个或多个事件的发生,并在事件发生后返回。函数的参数如下:
- `&event`:指向 `rt_event_t` 类型的指针,表示要等待的事件对象。
- `1`:表示要等待的事件掩码数量,即等待单个事件的发生。
- `RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR`:表示等待事件的条件。`RT_EVENT_FLAG_OR` 表示等待任意一个事件的发生,`RT_EVENT_FLAG_CLEAR` 表示等待后清除事件标志。
- `RT_TICK_PER_SECOND`:表示等待的超时时间,单位是操作系统的系统节拍数。
这段代码的意思是等待 `event` 事件的发生,等待的条件是任意一个事件的发生,并在事件发生后清除事件标志,如果等待超过了 `RT_TICK_PER_SECOND` 个系统节拍时间仍然没有事件发生,则函数返回 `RT_ERROR`。函数返回 `RT_EOK` 表示等待到了事件的发生。
阅读全文