FreeRTOS学习笔记-1-Coding Standard and Style Guide(编码标准和风格)

编程标准 (Coding Standard)

FreeRTOS 源代码遵守 MISRA (Motor Industry Software Reliability Association) 规范。
与 MISRA 标准有出入的地方如下:
两个 API 函数具有两个出口点。(Two API functions have more than one exit point.这里不明白)之所以这样是为了效率。
使用标准 C 数据类型,而不是用 typedef 将其名称重定义。
当建立一个任务时,代码会直接处理堆栈的栈顶和栈底地址。由于不同的平台的总线宽度不同,这就需要代码中对指针变量进行算术运算。因此,对指针变量的算术运算是不可避免的。When pointer arithmetic is used, the arithmetic result is programatically checked for correctness.(当需要对指针变量计算时,计算结果是可以编程的用来检验其正确性,这样不知准确不
trace 宏定义,默认情况下被定义为空,因此不会产生任何代码。
FreeRTOS builds with many different compilers, some of which are more advanced than others. For that reason FreeRTOS does not use any of the features or syntax that have been introduced to the C language by or since the C99 standard. The one exception to this is the use of the stdint.h header file. The FreeRTOS/Source/include directory contains a file called stdint.readme that can be renamed stdint.h to provide the minimum stdint type definitions necessary to build FreeRTOS - should your compiler not provide its own.(由于FreeRTOS可能会被许多不同级别的编译器编译,它没有采用c推荐的或是C99标准规定的特性和语法。。。。不知道怎么说

命名约定(Naming Conventions)

RTOS内核与Demo程序源代码使用下面的约定:

变量
  1. char类型的变量以 c 为前缀( uint8_t =》uc )
    short类型的变量以 s 为前缀 ( uint16_t=》us )
    long类型的变量以 l 为前缀 ( uint32_t是=》ul )
    float类型的变量以 f 为前缀
    double类型的变量以 d 为前缀
    枚举变量以 e 为前缀
  2. 其他类型(如结构体)以 x 为前缀
  3. 指针有一个额外的前缀 p , 例如short类型的指针前缀为 ps
  4. 无符号类型的变量有一个额外的前缀 u , 例如无符号short类型的变量前缀为 us
函数
  1. 文件内部函数以prv为前缀 (File scope static (private) functions are prefixed with prv.)
  2. API函数以其返回值类型前缀,按照前面对变量的定义 (, with the addition of the prefix v for void.)
  3. API函数的名字以其定义的语句所在的文件名开头。如vTaskDelete函数在Task.c文件中定义 and has a void return type(且返回值为void类型)
宏定义

宏名以所在的文件的文件名的一部分作为前缀(开头),并且用小写。
比如, configUSE_PREEMPTION 在文件 FreeRTOSConifg.h 中.
除了前缀,其余部分用大写,下划线来分隔单词。

数据类型(Data Types)

基本数据类型可以直接使用,但是有如下的例外和规则:
char类型在每个平台都有其自身的定义方式。有些平台 char 等价于 signed char ,另一些则等价于 unsigned char,为此,要在代码中明确的使用 signed char 或 unsigned char 。直接使用 char类型是被禁止的。
不能直接使用 int 类型,要使用 short 和 long。
float 和 double 没有在内核中使用,但是Demo 代码中有使用。

此外,有两种额外的类型要为每种平台定义。分别是:(There are three types that are defined for each port. These are:这里是三种哎
portTickType(TickType_t*可能版本的问题*)

如果 configUSE_16_BIT_TICKS 被定义, 则 portTickType 被定义为无符号16bit 类型,否则为无符号 32 bit 类型。参考API文档中的 定制部分获取详细信息。

portBASE_TYPE(BaseType_t)
被定义为当前平台最佳的整形类型。例如,在一个 32 位的平台上, portBASE_TYPE 被定义为32 位的数据类型。在16位的平台上, portBASE_TYPE 则被定义为 16 位的数据类型。如果 portBASE_TYPE 被定义为 char 类型,则 必须为 signed char 类型,因为代码中用到这种类型作为一些函数的返回值类型,而返回值必须可以为负值以用来指示错误条件.
UBaseType_t
This is an unsigned BaseType_t.

编程风格(Style Guide)

缩进
缩进使用 Tab . 一个 tab 等于 4 个空格.
注释
注释文字尽量不能超过 80 列,除非是用来描述一个参数。
不采用 C++ 类型的注释(//)。

【参照引用】

  1. http://blog.csdn.net/liyuanbhu/article/details/7853717
  2. http://www.freertos.org/FreeRTOS-Coding-Standard-and-Style-Guide.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值