引言:面向过程的C有效率高,代码紧凑的特点,在单片机嵌入式领域是C的主要阵地,while(1)+中断是其主要的开发模式,但是当系统复杂到一定程度,想要添加一个功能需要改动很多地方,耦合性太强;跟别人交流程序时对方根本理解不了,后台的while(1)中有的关键部分很容易被中断打断,我们只能不断的通过很多的“Disable_Inturrupt,Enble_Inturrput"补丁来解决,那么有没有好的解决办法呢:答案当然是有,且有多种方法。

  方法一:上微操作系统:ucos/ ecos/ mbed/free rtos/qnx/linux等待,通过系统的任务调度实现组装式多任务开发和之间的耦合关系

方法二:利用C++开发:这类虽然在单片机嵌入式上可以实现,因为EDA、编译器、处理器内存和FLASH的增大价格的走低都提供了条件。但是比起C还是编译效率不高。

方法三:利用状态机思路,包括很多人自己研究车的架构或者QPc类的利用UML语言实现的状态机(以后文章总结),http://www.dzsc.com/data/html/2007-9-28/44546.html

UML+OOPC嵌入式C语言开发精讲 (高焕堂) http://www.jb51.net/books/464915.html

方法四:利用C的结构体封装(结构体指针、指针函数)的特性和架构分层的思想对实现进行抽象和封装,使其结构清晰,低耦合,但这需要较高的C语言功底和分析概况能力。面向对象的三大特性:封装、继承和多态。顶级存在是类和对象,具体是将数据和方法进行糅合。

参考文章1:https://wenku.baidu.com/view/3e608b7ff61fb7360a4c6537.html

参考David Hanson 的《C语言接口与实现:创建可重用软件的技术》

或者STM32中的GPIO初始化函数、Linux的开发的技巧就是这种体现。

最新文章

  1. centos编译安装mysql
  2. [LeetCode] Ones and Zeroes 一和零
  3. Android Studio快捷键每日一练(1)
  4. SQL Server 2008 R2——ROW_NUMBER() 去掉不同行中相同列的重复内容
  5. show processlist 其中status详解(适用于所有概况)
  6. K-均值聚类及其在生物信息中的应用
  7. ASP.NET MVC 实现与SQLSERVER的依赖缓存
  8. 平方根的C语言实现(三) ——最终程序实现
  9. Python前世今生以及种类、安装环境
  10. spring boot整合mybatis基于注解开发以及动态sql的使用
  11. arm-linux-gcc/ld/objcopy/objdump参数总结【转】
  12. Ubuntu/Debian apt-get 404 Not Found Package Repository Errors,无法找到包的错误
  13. 使用grep查找字符串
  14. Pacman命令介绍
  15. 轻量级验证码生成插件webutil-licenseImage源码与实例应用
  16. grid网格的流动grid-auto-flow属性
  17. MPP、SMP、NUMA概念介绍
  18. 【OpenCV3】threshold()函数详解
  19. 定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Complex(int i,int j) 显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。 求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Compl
  20. Node.js开发入门—套接字(socket)编程

热门文章

  1. Chrome 插件 Vimium——让你脱离鼠标
  2. Eclipse jar打包详解
  3. Java线程池技术以及实现
  4. Tkinter图片按钮
  5. 单元测试JUnit4 Ctrl + Shift + T
  6. XML简介——可扩展标记语言(Extensible Markup Language)
  7. DDD领域驱动之干货(四)补充篇!
  8. v-for指令用法二
  9. Java标准输入
  10. rsync应用实例