Mbed 与C++

23 Jun 2018

大多数嵌入式工程师使用C语言来编写Cortex-M系列MCU 的程序,大家总觉得C++是用来编写Windows 或者Linux 应用程序的。特别是硬件工程师,也许压根就没有使用C++来编写程序。 当我们阅读Mbed OS 的代码时却发现,许多是使用C++来编写的。C++是一种功能强大的面向对象的程序设计语言,在嵌入式系统软件开发中使用C++,会获得意想不到的简洁和喜悦。

例如 在Mbed 程序设计中 定义GPIO 引脚的时候,一般写成 DigitalOut Relay(PE_12); 大家感觉很清晰简单。但是也许你会很疑惑。DigitalOut 是Mbed特有的一种数据类型么?为什么可以写成Relay.wirte(1),又可以写成 Relay=1;其实 digitalOut 是C++中的一个类。

它的构造函数是Digital(PinName p),而write(int v)和read()是类的成员函数。至于为什么可以写成Relay=1;是利用了C++类的操作符重载函数的概念。

对于嵌入式程序员来讲,对C++程序设计语言来编写嵌入式程序设计也许有一些担心和误解。总觉得使用C++是杀鸡用牛刀。担心C++ 写成的程序是否比C++要臃肿一点,其实不是这样的。C++的源程序的规模是大了一点,但是目标码并不比C语言大多少,据说只有10%的差别。

另一方面,作为一种面向对象的程序设计语言,C++可以使我们编写出模块化的程序,增加了程序的可读性和可再用性。从Mbed OS 的实践中表明,使用C++编写嵌入式程序是有效的。对象/类的概念更适合外围电路的抽象,硬件元件的描述。不用担心你没有使用C++的经验,我们需要补上一些C++的概念和技巧,它们包括函数,类,泛类型等概念。很快将你的C编程能力提升到C++水平,毕竟在嵌入式程序设计中,并不需要使用所有的C++语言特性,我们只要缺什么补什么就好了。

感兴趣的人可以阅读stephen prata 写的《C++ Primer Plus》第六版。学习计算机语言的最好方式是阅读别人的程序,试图自己试着去编写类似的程序代码,遇到不懂得地方才去看书。

让我们开始变干边学吧!

23 Jun 2018

阅读Mbed OS 程序是如果你觉得程序有点怪怪的话,去C++语言教科书中寻找答案。

23 Jun 2018

C++ 是面向对象的程序设计语言,它是1979年美国贝尔实验室在C语言的基础上发展起来的。国家标准化组织对C++建立了标准化,之前稳定的版本是C++98版本。 C++的版本为C++11 是ISO 2011年的标准版本,C++14 是2014年的标准版本,C++17 是2017年的标准版本。

30 Jul 2018

鄙人2011年就使用C++开发AVR,arm9单片机,当年网上都搜不到什么例子与资料 自己反汇编看C++编译的结果,然后就爱上了C++