FreeRTOS中主要的变更主要产生在app_FreeRTOS.c中.
虽然我们使用Cubemax无需我们自己进行程序的移植和文件组织,但是了解FreeRTOS的文件组成和FreeRTOS的文件功能,对于掌握FreeRTOS的原理和使用还是有帮助的。
FreeRTOS的文件组成大致可以分为五类,用户配置.H和程序文件.C。
1.信号量:是一个基于队列的任务,信号量操作的函数都是基于宏函数,它的宏函数都是调用队列处理的函数。
2.消息缓区:实现的功能也是基于宏函数的,它的宏函数都是基于流缓冲区的函数。
3.mpu_prototypes.h、mpu_warppers.h:都是内存保护功能单元的头文件,当用户使用MPU功能时,FreeRTOS会优先执行此文件中的函数。在嵌入式操作系统中,任务管理时必须的,其他的在用到的时候才会进行管理。
4.在FreeROS.h中包含了许多默认的宏定义,数据类型定义,接口函数定义等。这些宏定义可以分为两类。前缀为'config'的一般表示某种参数设置;另一个是以'INCLUDE'为开头的宏定义,用来表示是否编译某个宏函数的源代码。
5.与FreeRTOS.h对应的另一个文件是FreeFRTOSConfig.h文件,这个文件中也有一些宏定义以‘config’开头,如果一些在该文件中没有的宏定义,就会使用到FreeRTOS.h中的默认的宏定义。
6.projdefs.h:包含了一写FreeRTOS中的通用定义,如错误编号宏定义、逻辑值宏定义等。
7.stack_macros.h:一个大写一个小写,其实两个文件的内容完全一样,这是为了本版兼容所以才做了两个文件,一个大写一个小写。文件中定义了进行栈溢出检查的函数taskCHECK_FOR_STACK_OVERFLOW(),默认情况下是不启用的,如果需要启用的话需要设置为1或者2。
8.portmacro.h:重新定义了一些数据类型的符号。
9.head_4.c:内存管理相关的文件,FreeRTOS提供了五种内存管理的方案,我们一般都是默认的第四种方案,这个文件实现了动态分配内存的函数。
变量名命名规则:
'C'表示char类型,'S'表示int16_t(short)类型,‘I'表示int32_t类型,'UC'表示uint_8类型,'US'表示uint16_t类型,'UL'表示uint32_t类型。
'X'表示结构体变量、任务句柄、队列句柄等。
'P'指针变量。