目录
测试环境如下
stm32F103C8T6
MDK keil5
stm32cube + FreeRTOS
FREERTOSY一级目录解释
下载的版本为10.4.1
包含一个源码+代码案例
代码结构
-
tasks.c && list.c
-
queue.c 提供队列和信号量服务
-
timers.c 提供了软件计时器功能
-
event_groups.c 提供了事件组功能
-
croutine.c 实现了FreeRTOS协同例程功能 (很少使用)
因为文件多了会有冲突 ,所以将C和H放在一个文件夹里面。
portable
特定于FreeRTOS端口的源文件包含在FreeRTOS/Source/portable目录中。
MemMang–FreeRTOS 内存分配案例
实例堆分配方案包含在FreeRTOS\Source\portable\MemMang
编译必须要包含的3个头文件
- FreeRTOS/Source/include.(核心FreeRTOS头文件的路径)
- FreeRTOS/Source/portable/[compiler]/[architecture].(你所使用芯片编译器+架构)
- FreeRTOSConfig.h(配置头文件)
代码案例
- 提供一个工作和预配置项目的示例,其中包含正确的文件,并设置了正确的编译器选项。
- 以最小的设置或先验知识进行“开箱即用”实验。
- 以演示FreeRTOS API的使用方法
- 作为创建实际应用程序的基础。
FreeRTOS/Demo/Common/Minimal directory
常见的演示任务纯粹是为了演示如何使用FreeRTOS API——它们没有实现任何特别有用的功能
如何建一个新的工程-和linux的很像
建议通过调整其中一个现有项目来建立新的项目
可以从一下几个步骤
-
打开提供的演示项目,确保按照预期构建和执行。
-
删除定义演示任务的源文件。目录中的任何文件演示/公共目录可以从项目中删除。
-
删除main()中的所有函数调用,prvSetupHardware()vTaskStartScheduler()除外,如清单1所示。
-
检查仍在构建的项目(再编译一下)。
创造一个全新的项目
- 使用您选择的工具链,创建一个尚未包含任何工具链的新项目
FreeRTOS源文件 - 确保可以构建、下载到目标硬件并执行新项目。
- 只有当您确定您已经有一个工作项目时,才将表1中详细说明的FreeRTOS源文件添加到项目中。
- 将演示项目为使用中的端口提供的FreeRTOSConfig.h头文件复制到项目目录中。
- 添加头文件信息
1 。 FreeRTOS/Source/include
2 。 FreeRTOS/Source/portable/[compiler]/[architecture] (where [compiler] and [architecture] are correct for your chosen port)
3。The directory containing the FreeRTOSConfig.h header file - 从相关的参考代码项目复制编译器设置。
- 安装任何FreeRTOS中断处理程序可能是必要的。使用描述正在使用的端口的web页面,以及为正在使用的端口提供的演示项目作为参考。
注意!!!版本比9.0要老的必须要创建heap.c 文件
数据类型和编程风格
TickType_t
时钟数据类型 可以定义为16(short) 或者是32位(int)的类型
上面的定义取决于 configUSE_16_BIT_TICKS
这个的数据类型配置是在
source -》portable-> xxx ->prtmacro.h
使用16位类型可以大大提高8位和16位架构的效率但是严重限制了可以指定的最大块周期。没有理由在32位架构上使用16位类型.
BaseType_t
BaseType_t通常用于返回类型,这些类型只能占用非常有限的值范围,并且用于pd TRUE/pd FALSE类型Booleans。
变量名称定义规则
- 变量是无符号的 就是用u 作为前缀
- 如果变量是指针,那么就是使用p作为前缀
- 如果是uint8_t 就已uc作为前缀
- 如果是有符号的 就pc作为前缀。
函数名称定义规则
函数的前缀包括它们返回的类型和定义它们的文件
- vTaskPrioritySet() returns a void and is defined within task.c
- xQueueReceive() returns a variable of type BaseType_t and is defined within queue.c.
- pvTimerGetTimerID() returns a pointer to void and is defined within timers.c
- 文件作用域(私有)函数的前缀是’ prv ’
- 一个选项卡总是设置为等于四个空格。
- 宏命令规则: 大多数宏都以大写形式编写,并以小写字母作为前缀,这些字母指示宏定义的位置。
陌生单词
aims
orientate
structure
approximately
compilers
implements
clashes
allocation
respectively
dynamic
Occasionally
hierarchy
mentioned
prefixed
semaphore
陌生语句
- Each supported combination of compiler and processor is considered to be a separate FreeRTOS port.
注意:of 的话要先翻译后面的 编译器处理器的结合
每个支持的编译器和处理器组合都被认为是一个独立的FreeRTOS端口