ch0 CBsp类的实现

来源:互联网 发布:好看的古装电影知乎 编辑:程序博客网 时间:2024/05/17 13:44

为什么用C++开发单片机程序?

在以微处理器为核心的嵌入式系统中,大部分采用C语言来进行程序设计,但是随着系统规模的增大,程序越来越复杂,维护也越发困难。而使用C++进行开发有以下好处(前提是编译器必须支持C++,否则都是空谈):
(1)减少了参数传递。在C++中可以将用到的数据作为数据成员,这样可以避免函数的参数传递过程,能够提高执行速度和效率。
(2)更加安全。C++对数据和方法进行了封装,这样可以隐藏类实现的细节,避免内部数据结构暴露。
(3)可以减少命名的冲突。C语言没有命名空间的概念,这样容易导致名字冲突。
    当然在C语言中也可以通过在结构体中定义函数指针的方式达到与C++封装类似的效果。但是这种方式比较麻烦,而且在C语言中没有访问权限控制 ,结构体内的所有成员全部是可以直接访问的,这样不利于隐藏实现的细节,而且如果调用者对结构体不熟悉,访问了不该访问的成员,那后果是灾难性的。
    这里我以stm32l151c8t6为例,和大家交流如何使用C++进行单片机开发,编译器使用的是MDK,使用的固件库为STM32L1xx_StdPeriph_Lib_V1.3.1

从流水灯看面向对象程序风格

下面是面向过程和面向对象两种程序风格的示例:
面向过程的程序风格:
面向对象的程序风格:
从中可以看出面向对象的程序风格思路更加清晰,对于while(1)中的业务代码,如果底层IO变化了,面向过程的程序修改涉及了业务代码的修改,而对于面向对象的程序,仅仅只要修改相关的类就行了,无需修改业务代码,这大大降低了复杂程序的维护成本。而且由于将相关函数和数据封装到相关类中去了,程序有了较好的分类和层次性。下面我来介绍一下我们的第一个类CBsp。

第一个C++类------CBsp

CBsp的职能:
(1)初始化系统相关的资源:比如中断向量属性的设置,调试串口的初始化。
(2)为用户提供延时操作。
这是CBsp类:
具体实现:

调用示例



参考文献

cortex-m3之stm32嵌入式系统设计

CBsp类代码:http://download.csdn.net/detail/winsbb/9869686

原创粉丝点击