没志青年
发布于 2025-06-16 / 25 阅读
0

FreeRTOS 概述

FreeRTOS 使用的C语言版本C90

FreeRTOS 组成文件

FreeRTOS 源文件

文件

是否必须

tasks.c

任务、任务通知

list.c

链表,是任务等的基础

queue.c

一般看作是必须,提供队列操作、信号量、互斥量操作

timer.c

可选,软件定时器

event_groups.c

可选,事件组

croutine.c

如果希望是协作式调度,现在基本淘汰了

stream_buffer

头文件

头文件

说明

list.h

task.h

queue.h

timer.h

semphr.h

event_groups.h

projdefs.h

atomic.h

注意 FreeRTOS.h 头文件必须在其它头文件前面:

#include "FreeRTOS.h"
#include "queue.h"
#include "event_groups.h"
#include "semphr.h"

如果是:

#include "event_groups.h"
#include "FreeRTOS.h"
#include "queue.h"
#include "semphr.h"

就会报错:

error:  #35: #error directive: "include FreeRTOS.h" must appear in source files before "include event_groups.h"

FreeRTOS移植相关文件:

  • port.c:

  • portmacro.h:

  • portable.h:

函数命名规则

在 FreeRTOS 以及嵌入式开发中,函数的命名前缀通常遵循一定的规则,主要目的是为了区分函数的作用域、功能和调用上下文。通过前缀,可以快速了解函数的用途、位置和使用条件。这种命名规则有助于代码的可读性和可维护性。

以下是一些常见的函数前缀及其含义:

一类表示类型:

前缀

返回值

v

void

x

BaseType_t 或者 bool

ux

unsigned BaseType_t

pv

void *

pc

char *

e

enum 枚举类型

一类表示功能:

prv

标记为文件内私有函数,不应该在模块外调用。

port

表示与硬件平台相关的移植层

config

代表配置项

task

代表任务管理功能

queue

代表队列操作

sem

代表信号量操作

tick

代表系统节拍相关函数

常用类型

BaseType_t

pdTRUE

pdFALSE

两套 API

静态、动态

任务、中断