标签:00 前缀 FreeRTOS 编码标准 函数 typedef 类型 define 变量
文章目录
0 前言
@ Author :Dargon
@ Record Date :2021/07/12
@ Reference Book : `FreeRTOS源码详解与应用开发`,`ARM Cortex-M3与Cortex-M4权威指南`,`B站正点原子FreeRTOS讲解视频`
@ Purpose :学习正点原子的miniFly,该飞控基于FreeRTOS系统开发的,所以学习一下记录下关于RTOS系统的一些基本操作,大概了解系统的工作原理,如何创建,运行,切换任务等等基本操作流程。在此进行学习的记录。
FreeRTOS作为一个系统有自己的一套代码的风格,熟悉和了解其内部的代码风格,在看到一个函数名、变量名字的时候,会清晰的得知,函数的返回类型,函数属于哪个文件夹下面,变量的定义类型等。将更多有助于学习源码。
1 命名规则
1.1 变量命名
- uint32_t 类型变量表示 ul “u” 表示unsigned,“l”表示long型,表示32位变量
- uint16_t 类型变量表示 us “u” 表示unsigned,“l”表示short型,表示16位变量
- uint8_t 类型变量表示 uc “u” 表示unsigned,“c”表示char型,表示8位变量
- 非标准定义的类型变量的前缀使用x,例如
BaseType_t
、TickType_t
,这两种类型的是进行重定义得出的。 - 非标准定义的无符号类型变量的前缀使用u,例如ux表示
UBaseType_t
- 位于文件
portmacro.h
,端口 宏
/* Type definitions. */
#define portCHAR char
#define portFLOAT float
#define portDOUBLE double
#define portLONG long
#define portSHORT short
#define portSTACK_TYPE uint32_t
#define portBASE_TYPE long
// --未找到 BaseType_t的typedef
typedef portSTACK_TYPE StackType_t;
typedef long BaseType_t;
typedef unsigned long UBaseType_t;
typedef uint32_t TickType_t;
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL
- 枚举enum 类型变量使用 e开头
- 指针类型 前面加p,例如指针指向一个uint16 类型的变量,这个指针前缀pus
- char 类型变量 前缀c, char* 变量用于字符串,前缀pc
1.2 函数命名
- 使用static 限定某个文件的私有函数使用前缀 prv,表明这个函数的作用域只在当前文件中有效
- API函数根据 函数的返回值的类型来决定函数的前缀,例如返回uint32_t类型的,前缀为ul,返回void类型的,前缀为v
- 函数名字会使用他们所在的文件名
// --v: return void ;port: 位于port.c 文件夹内
void vPortEndScheduler( void )
{
/* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
}
1.3 宏macro命名
- 例如
#define configUSE_PREEMPTION
config:表示在config文件中定义,后面的单词均是大写的,且用下划线"_"隔开
2 数据类型
- 使用的是STM32 F4,对应的MPU是32位的架构,对应的是4个宏定义的类型
BaseType_t
、TickType_t
、UBaseType_t
、StackType_t
,对应的都是处理器32位的架构,属于处理器所处理效率最高的数据类型
_t、
UBaseType_t、
StackType_t`,对应的都是处理器32位的架构,属于处理器所处理效率最高的数据类型
标签:00,前缀,FreeRTOS,编码标准,函数,typedef,类型,define,变量
来源: https://blog.csdn.net/Dallas01/article/details/118720486
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。