freeRTOS常用函数
时间: 2024-03-01 11:48:43 浏览: 245
FreeRTOS是一个开源的实时操作系统,常用于嵌式系统中。以下是一些常用的FreeRTOS函数:
1. `xTaskCreate()`:创建一个任务,并指定任务的入口函数、任务优先级等参数。
2. `vTaskDelete()`:删除一个任务,释放任务所占用的资源。
3. `vTaskDelay()`:使当前任务进入阻塞状态,延时一段时间后再继续执行。
4. `xSemaphoreCreateBinary()`:创建一个二值信号量。
5. `xSemaphoreTake()`:获取一个信号量,如果信号量不可用,则任务进入阻塞状态。
6. `xSemaphoreGive()`:释放一个信号量,使其可用。
7. `xQueueCreate()`:创建一个消息队列,用于任务间的通信。
8. `xQueueSend()`:向消息队列发送一条消息。
9. `xQueueReceive()`:从消息队列接收一条消息。
相关问题
freertos常用的函数
1. xTaskCreate: 创建一个新的FreeRTOS任务。
2. vTaskDelete: 删除一个FreeRTOS任务。
3. xQueueCreate: 创建一个队列。
4. xQueueSend: 向一个队列发送数据。
5. xQueueReceive: 从一个队列接收数据。
6. xSemaphoreCreateBinary: 创建一个二元信号量。
7. xSemaphoreGive: 给予一个二元信号量。
8. xSemaphoreTake: 等待一个二元信号量。
9. vTaskDelay: 延迟当前任务。
10. xEventGroupCreate: 创建一个事件组。
11. xEventGroupSetBits: 设置事件组中的位。
12. xEventGroupWaitBits: 等待事件组中的位被设置。
13. xTimerCreate: 创建一个定时器。
14. xTimerStart: 启动一个定时器。
15. xTimerStop: 停止一个定时器。
freertos常用api函数
### FreeRTOS 常用 API 函数列表及说明
#### 任务管理函数
- **`xTaskCreate()`**: 创建一个新的任务并将其加入到就绪列表中。此函数动态分配所需的存储空间[^2]。
```c
BaseType_t xTaskCreate(
TaskFunction_t pvTaskCode,
const char *pcName,
configSTACK_DEPTH_TYPE usStackDepth,
void *pvParameters,
UBaseType_t uxPriority,
TaskHandle_t *pxCreatedTask
);
```
- **`vTaskDelete()`**: 删除指定的任务,释放其占用的资源。通常用于终止不再需要的任务。
```c
void vTaskDelete(TaskHandle_t xTaskToDelete);
```
- **`vTaskSuspend()` 和 `vTaskResume()`**: 挂起或恢复特定任务的执行。当一个任务被挂起时,它不会参与调度直到再次被唤醒[^3]。
```c
void vTaskSuspend(TaskHandle_t xTaskToSuspend);
void vTaskResume(TaskHandle_t xTaskToResume);
```
#### 队列操作函数
- **`xQueueCreate()`**: 创建一个队列实例,并返回指向该队列的手柄。创建成功则返回非NULL值;失败则返回NULL。
```c
QueueHandle_t xQueueCreate(UBaseType_t uxQueueLength, UBaseType_t uxItemSize);
```
- **发送数据至队列**
- 使用 `xQueueSend()` 或者 `xQueueSendToBack()` 将消息放入队列尾部。
- 如果想要把新到来的消息放在最前面,则可以调用 `xQueueSendToFront()` 方法来实现后入先出的行为。
```c
BaseType_t xQueueSend(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait);
BaseType_t xQueueSendToFront(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait);
BaseType_t xQueueSendToBack(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait);
```
- **接收来自队列的数据**
可通过 `xQueueReceive()` 来等待从队列接收到项目。如果是在ISR上下文中,则应该使用带有中断安全性的版本如 `xQueueReceiveFromISR()`。
```c
BaseType_t xQueueReceive(QueueHandle_t xQueue,void *pvBuffer,TickType_t xTicksToWait);
```
#### 调度器控制命令
- **`vTaskStartScheduler()`**: 启动多任务处理机制——即开始轮询各个处于可运行状态下的线程/进程,按照设定好的策略决定哪个要被执行.
```c
void vTaskStartScheduler(void);
```
- **`vTaskEndScheduler()`**: 终止当前正在运作着的操作系统核心部分的工作流程,这会使得所有的活动都被暂停下来直至下一次重启为止.
```c
void vTaskEndScheduler(void);
```
阅读全文
相关推荐














