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嵌入式系统设计
阅读全文
1 0
- ch0 CBsp类的实现
- CSAPP:Ch0 十进制与16进制的转换脚本
- 【Ray Tracing in One Weekend】(ch0~1)c++生成的第一张图片
- CH0 安装配置Greenfoot
- 解题报告 ch0
- 《Unix高级环境编程》 读书笔记(1)(ch0~ch2)
- 读书笔记--Neural Networks and Deep Learning(CH0)
- 博客已迁移到www.3ch0.cn
- CCtrlView类的实现
- InputStream类的实现
- InputStream类的实现
- InputStream类的实现
- InputStream类的实现
- InputStream类的实现
- InputStream类的实现
- InputStream类的实现
- InputStream类的实现
- InputStream类的实现
- 海明码的编码和校验方法
- 处理软件包 mysql-server-5.7 (--configure)时出错
- node开发之captchapng
- Ubuntu16.10安装Drcom客户端
- Mysql 存储过程之函数-如判断两个以逗号分隔字符串的包含关系
- ch0 CBsp类的实现
- Java的基本了解
- 云计算的理解
- 笔记-arm-linux-gnueabi-ld: cannot find common/env_embedded.0的解决方法
- php运用elasticsearch
- SSRS 锁定标题栏
- pat1091-1100
- jdbc
- iOS-线程相关