1.1FreeRTOS目录结构
使用STM32CubeMX创建的FreeRTOS工程中,FreeRTOS相关的源码如下:
主要涉及2个目录
Core:
Inc目录下的FreeRTOSConfig.h是配置文件
Src目录下的freertos.c是STM32CubeMX创建的默认人物
Middlewares\Third_Party\FreeRTOS\Source:
根目录下是核心文件,这些文件是通用的
portable目录下是移植时需要实现的文件
目录名为:【compiler】/[architecture]
比如:RVDS/ARM_CM3,这表示cortexM3架构在RVDS工具上的移植文件
1.2核心文件
FreeRTOS的最核心文件只有2个:
FreeRTOS/Source/tasks.c
FreeRTOS/Source/list.c
其他文件的作用如下:
1.3移植时涉及的文件
移植FreeRTOS时涉及的文件放在
FreeRTOS/Source/portable/[compiler]/[architecture]目录下,
比如RVDS/ARM_CM3,这表示cortexM3架构在RVDS或keil工具上的移植文件。
里面有两个文件:
port.c
portmacro.h
1.4头文件相关
FreeRTOS需要3个头文件目录:
FreeRTOS本身的头文件:Middlewares\Third_Party\FreeRTOS\Source\include
移植时用到的头文件:Middlewares\Third_Party\FreeRTOS\Source\portable\[compiler]\[architecture]
含有配置文件FreeRTOSConfig.h的目录:Core/Inc
1.5内存管理
文件在 Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang 下,它也是放
在“portable”目录下,表示你可以提供自己的函数。
1.6入口函数
在 Core\Src\main.c 的 main 函数里,初始化了 FreeRTOS 环境、创建了任务,然后启动
调度器。源码如下:
1.7数据类型和编程规范
每个移植的版本都含有自己的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/pdFALSE
变量名有前缀