# Design-Patterns-for-Embedded-system-in-C **Repository Path**: hwzzy666/Design-Patterns-for-Embedded-system-in-C ## Basic Information - **Project Name**: Design-Patterns-for-Embedded-system-in-C - **Description**: 记录《C嵌入式编程设计模式》所思所学,分享学习,共同成长。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-01 - **Last Updated**: 2022-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Design-Patterns-for-Embedded-system-in-C ## 介绍 记录《C嵌入式编程设计模式》所思所学,分享学习,共同成长。 ## 工程介绍 - books: 参考书 - chapter01: - 01-Sensor - 02-Queue - 03-SecuritySupervisor - images: 存放过程图片 - uml: 存放过程uml源文件 ## chapter01 什么是嵌入式编程 ### 1.1 嵌入式系统有何特殊之处 嵌入式系统的定义:**不提供通用的计算环境,而是致力于完成现实世界中具体功能的计算系统。** 嵌入式系统有个重要的子集是实时系统,很多人错误地认为**实时**,就是很快,这种理解是不对的。实时系统是一种系统必须满足实时性约束才能正确运行的系统。可以分为硬实时和软实时。 硬实时:以系统实时性约束中的最后期限作为依据,在最后期限之前,指定的活动必须完成。 软实时:加入时间期限以外的标准来满足系统的实时性约束,比如平均吞吐量、平均执行时间、最大脉冲长度或其他的衡量标准。 #### 1.1.1 嵌入式设计约束 - 尽量少的使用硬件资源,往往嵌入式系统硬件资源比较珍贵 - 尽量高的提高软件性能 - 可靠性、健壮性、安全性 ### 1.2 面向对象还是结构化 C语言如何实现面向对象 #### 类 最简单实现类的方法是使用文件作为封装边界:公共变量和方法子啊头文件中可见,在实现文件中包含方法体、私有变量和方法。多个文件可使用依赖关系实现调用。 ![1-1用文件表示类](./images/1-1用文件表示类.png) - ps: 使用亿图工具手绘,与书中原图略有差异。 一个更为灵活的方式是使用文件内的结构体表示类,为确保函数访问正确的对象数据,我们需要传递一个me指针。 #### 子类 子类包含基类结构体指针,将基类的操作和属性带到子类中。 ![Queue和CachedQueue](./images/Queue和CachedQueue.png) - ps: 使用亿图工具手绘,与书中原图略有差异。 #### 状态机 最普通的方法是使用if-then,switch-else实现。例如: - 加入状态变量 - 为每一个事件添加处理函数,并传入需要的数据作为参数 - 创建事件调度函数,通过事件接收器调用