FreeRTOS

1.1FreeRTOS目录

 1.2核心文件

FreeRTOS 的最核心文件只有 2 个:

✈ FreeRTOS/Source/tasks.c  

✈ FreeRTOS/Source/list.c

其他文件的作用也一起列表如下:

FreeRTOS/Source/下的文件作用
tasks.c必需,任务操作
list.c必须,列表
queue.c基本必需,提供队列操作、信号量(semaphore)操作
timer.c可选,software timer
event_groups.c可选,提供 event group 功能

1.3移植时涉及的文件

移植 FreeRTOS 时涉及的文件放在

FreeRTOS/Source/portable/[compiler]/[architecture]目录下,

比如:RVDS/ARM_CM3,这表示 cortexM3 架构在 RVDS 或 Keil 工具上的移植文件。

里面有 2 个文件:

✈ port.c

✈ portmacro.h

1.4 头文件相关

1.4.1 头文件目录 FreeRTOS 需要 3 个头文件目录:

✈ FreeRTOS 本身的头文件:FreeRTOS/Source/include

✈ 移植时用到的头文件:FreeRTOS/Source/portable/[compiler]/[architecture]

✈ 含有配置文件 FreeRTOSConfig.h 的目录

1.4.2 头文件

头文件作用
FreeRTOSConfig.h

FreeRTOS 的配置文件,比如选择调度算法:configUSE_PREEMPTION

每个 demo 都必定含有 FreeRTOSConfig.h

建议去修改 demo 中FreeRTOSConfig.h,而不是从头写一个

FreeRTOS.h

使用 FreeRTOS API 函数时,必须包含此文件。

在 FreeRTOS.h 之后,再去包含其他头文件,比如:

task.h、queue.h、semphr.h、event_group.h

1.5 内存管理

文件在 FreeRTOS/Source/portable/MemMang 下,它也是放在 portable 目录下,表 示你可以提供自己的函数。 源码中默认提供了 5 个文件,对应内存管理的 5 种方法。

文件优点缺点
heap_1.c分配简单,时间确定只分配、不回收
heap_2.c动态分配、最佳匹配碎片、时间不定
heap_3.c调用标准库函数速度慢、时间不定
heap_4.c相邻空闲内存可合并可解决碎片问题、时间不定
heap_5.c在 heap_4 基础上支持分隔的内存块可解决碎片问题、时间不定

1.6 数据类型和编程规范

1.7.1 数据类型

每个移植的版本都含有自己的 portmacro.h 头文件,里面定义了 2 个数据类型:

TickType_t:

        ✈  FreeRTOS 配置了一个周期性的时钟中断:Tick Interrupt

        ✈ 每发生一次中断,中断次数累加,这被称为 tick count

        ✈ tick count 这个变量的类型就是 TickType_t

        ✈ TickType_t 可以是 16 位的,也可以是 32 位的

        ✈  FreeRTOSConfig.h 中定义 configUSE_16_BIT_TICKS 时,TickType_t 就是 uint16_t

        ✈  否则 TickType_t 就是 uint32_t

        ✈  对于 32 位架构,建议把 TickType_t 配置为 uint32_t

▣  BaseType_t

        ✈  这是该架构最高效的数据类型  32 位架构中,它就是 uint32_t

        ✈ 16 位架构中,它就是 uint16_t

        ✈  8 位架构中,它就是 uint8_t

        ✈  BaseType_t 通常用作简单的返回值的类型,还有逻辑值,比如 pdTRUE/pdFALS

1.7.2 变量名

        变量名有前缀:

变量名前缀含义
        cchar
        sint16_t,short
        lint32_t,long
        x

BaseType_t, 其他非标准的类型:结构体、task handle、queue handle 等

        uunsigned
        p指针
        ucuint8_t,unsigned char
        pcchar 指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值