FreeRTOS笔记篇:第一章 描述

测试环境如下

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端口
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值