目录
测试环境如下FREERTOSY一级目录解释代码结构因为文件多了会有冲突 ,所以将C和H放在一个文件夹里面。portableMemMang--FreeRTOS 内存分配案例编译必须要包含的3个头文件代码案例FreeRTOS/Demo/Common/Minimal directory如何建一个新的工程-和linux的很像创造一个全新的项目数据类型和编程风格**TickType_t**BaseType_t
变量名称定义规则函数名称定义规则陌生单词陌生语句
测试环境如下
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.cxQueueReceive() 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端口