FreeRTOS笔记篇:第一章 描述

    科技2024-03-25  99

    目录

    测试环境如下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端口
    Processed: 0.023, SQL: 8