编码风格:µCOS vs FreeRTOS

描述

不定期有读者在问:

怎么才能写出漂亮的代码?

哪里有优秀的代码可以参考?

怎样才能提高自己编码水平?

  其实,我们身边到处都有优秀的代码可以借鉴,只是你没有认真去发现而已。裸机、RTOS、Linux等各类优秀的开源代码相信你一定见到过,还有一些优秀的开源库你也肯定接触过。  

想要写出漂亮、优秀的代码,首先,你的代码必须要有一套规范。

  今天就给大家分享一下我们身边熟知的RTOS的编码规范,以目前(2023-01-10)最新版本的uC/OS-III V3.08.02和 FreeRTOS V10.5.1为例:  

编码标准

uC/OS 和 FreeRTOS 都是遵循 MISRA C 编码标准,均支持 PC-Lint 静态检查,两者官方文档都有说明。

提示:

MISRA C 标准,指的是汽车 C 语言开发标准,可以参看之前分享的文章:MISRA C:2012 标准是什么?

1.uC/OS

uC/OS文章明确指出遵循MISRA C:2012标准,也支持 PC-Lint 的静态检查。

RTOS

2.FreeRTOS

FreeRTOS也明确指出采用 MISRA C编码标准,但是不支持 C99 之后的标准,也支持 PC-Lint 静态检查。

RTOS

FreeRTOS在源代码中有大量说明(注释)对 PC-Lint 静态检查可能会引起异常的代码,这一点在 uC/OS 源代码中是没有的。

比如:

RTOS

配置文件

两种RTOS配置文件(也就是所谓的“裁剪”文件)的“内容”有点类似,也是进行了分类。

不过,uC/OS的分类和注释更人性化,更适合初学者理解。

1.uC/OS

uC/OS的配置文件通常是:os_cfg.h

RTOS

2.FreeRTOS

FreeRTOS的配置文件通常是:FreeRTOSConfig.h

RTOS

标头

两种RTOS标头的“内容”有点类似,只是一个居中,一个靠左。

1.uC/OS

包含RTOS版本、版权说明、开源协议说明等:

RTOS

2.FreeRTOS

包含RTOS版本、版权说明、开源协议说明、网址等,和uC/OS类似。

RTOS

命名

两种RTOS命名规则差别有点大,但都符合常规代码命名规则。

1.文件名

uC/OS以【os_系统文件】方式,显得更规范(体现了模块化)。

FreeRTOS就比较直接,这个可能是刚才是命名的时候没有长期规划,然后为了兼容,一直沿用至今。(这种更容易引起文件重名)

RTOS

2.宏

两者有共同之处:下划线隔开大写字母,但是开头(前缀)有一定区别。

以“配置文件”为例:uC/OS以【OS_CFG_】开头,FreeRTOS以【config】开头。

RTOS

3.数据类型

uC/OS定义的数据类型,相对更常见,也更适合新手。

FreeRTOS定义的数据类型,更“系统”一点,适合老司机,对新手相对没那么友好。

RTOS

4.函数名

两者有点类似,前缀不一样,后面都是以【大写字母开头】进行区分。

比如:创建任务的函数名:

RTOS

FreeRTOS的前缀官方有这样的描述:

静态(static)函数以 prv 为前缀。比如:prvIdleTask 函数。

API 函数以其返回类型为前缀,void 类型以 v 为缀。比如:vTaskDelete 函数。

注释

//  /* */ 是两种最常见注释的方法,但这两种 RTOS 基本以【/* */】注释居多。

注释的位置也是有讲究,通常在代码所在行上一行,或者在代码所在行(代码后面)。

这里主要说明一下,FreeRTOS在代码中没有相信注释函数的功能、参数、返回值等信息。

还是以“创建任务”函数为例:

RTOS

当然,FreeRTOS的函数注释信息,在手册中有相信描述。

缩进

这两种RTOS缩进方式一样,都是采用 4 空格:

RTOS

这里要提醒一下,切记不要 Tab 和空格两者混用,不然代码就是一片乱。(在不少新手,或者初级工程中就经常出现这种,代码简直不敢看)

单词缩写

不同的领域,有不同的缩写方式。在RTOS中也有一些常见的缩写单词,比如:

缩写 原意
Addr Address
Blk Block
Chk Check
Clr Clear
Cnt Count
Ctr Counter
Ctx Context
Cur Current
Del Delete
Dly Delay
Err Error
OS Operating System‍‍
CPU Center Processing Unit

好了,本文就分享到这里。以上只是列举了部分典型的编码风格,更多细节,大家可以抽时间自行研究。

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分