加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 编码标准
    • 配置文件
    • 标头
    • 命名
    • 注释
    • 缩进
    • 单词缩写
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

编码风格:µCOS vs FreeRTOS

2023/01/11
1251
阅读需 6 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

作者 | strongerHuang

不定期有读者在问:怎么才能写出漂亮的代码?哪里有优秀的代码可以参考?怎样才能提高自己编码水平?

其实,我们身边到处都有优秀的代码可以借鉴,只是你没有认真去发现而已。裸机、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 的静态检查。

2.FreeRTOS

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

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

比如:

配置文件

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

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

1.uC/OS

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

2.FreeRTOS

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

标头

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

1.uC/OS

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

2.FreeRTOS

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

命名

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

1.文件名

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

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

2.宏

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

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

3.数据类型

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

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

4.函数名

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

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

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

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

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

注释

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

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

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

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

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

缩进

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

这里要提醒一下,切记不要 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

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

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
PA4342.473NLT 1 Pulse Electronics Corporation General Purpose Inductor,

ECAD模型

下载ECAD模型
$1.43 查看
650076-000 1 TE Connectivity D-436-38

ECAD模型

下载ECAD模型
$5.28 查看
VSSRC20AD330470UF 1 Vishay Intertechnologies RC Network, T-Filter, 1W, 33ohm, 0.000047uF, Surface Mount, 20 Pins, SSOP, ROHS COMPLIANT
暂无数据 查看
FreeRTOS

FreeRTOS

Market-leading MIT licensed open source real-time operating system (RTOS) for microcontrollers and microprocessors. Includes IoT and general purpose libraries.

Market-leading MIT licensed open source real-time operating system (RTOS) for microcontrollers and microprocessors. Includes IoT and general purpose libraries.收起

查看更多

相关推荐

电子产业图谱

作者黄工,从事嵌入式软件开发工作8年有余,高级嵌入式软件工程师,业余维护公众号『strongerHuang』,分享嵌入式软硬件、单片机、物联网等内容。