IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机代码分层 -> 正文阅读

[嵌入式]单片机代码分层

1.在代码中我会将整个工程分为三层:硬件层,中间层,应用层:

硬件层:

? ? ? ? 1.主要是硬件的初始化,以及从硬件中采集数据。初始化没什么好讲的,我们主要讲如何接受采集的数据。

? ? ? ? ?2.硬件层就是我们的传感器,我们需要将传感器中的数据读出来。我们知道,读数据其实就是将DR(data resigster)中的数据放到一个变量中。

? ? ? ? 3.一般采集数据有两种方式:一种通过中断触发后然后读数据(例如串口数据在中断中接收),另一种通过主动轮询读数据(例如ADC数据采集(非中断))。

? ? ? ? 4.为了达到分层效果,意味着我的bsp.c和bsp.h这两个文件不能包括任何外部的头文件(由开发人员自己写的),只要保证这种效果,分层自然开始了。

? ? ? ? 5.当然我们这里的数据要如何发送给中间层去简单的处理,这里还是分中断方式和非中断方式:中断方式采用函数回调的方法,非中断方式采用返回值的方法

中间层:

? ? ? ? 1.这一层是对采集到的原始数据做处理的,将采集到的冰冷的数据进行处理,得到不同的信号,状态。

? ? ? ? 2.同理这一层我们也不包含任何自己写的外部头文件,只要参杂了任意自定义的头文件那么就表示分层失败。

? ? ? ? 3.这一层一个入口(硬件层采集到的数据),一个出口(信号,状态等等)。

? ? ? ? 4.如果应用层有多个应用需要去读中间层返回值,那么我们这时候就不能用单一函数去返回处理出来的状态,而要用一个全局变量去接处理出来的状态,然后大家可以通过访问这个全局变量知道自己相应的要做什么(比如按键按下,长按开灯,短按电机转起来)。当如果只要一个应用层去读中间层的状态,那么我们直接让中间层处理完毕的数据返回即可。

? ? ? ? 5.中间层一般涉及到的难点应该也能叫做算法:比如ADC滤波,串口数据队列

应用层:

? ? ? ? 1.这一层可以说是最难写的,需要将所有的中间层或者硬件层的数据组织起来,如果组织不好将会导致写出来的应用到处是bug,或者后面开发时需求一改,整个应用层逻辑全部打乱。

? ? ? ? 2.当然这一层我们一般都是调用中间层,然后将中间层返回的状态做最终的处理。比如就点亮一个普通的灯,这个灯可能会读很多状态,按键按下开灯,再按下关灯,ADC采集到低电压灯闪烁,档位调节改变亮度等等。

? ? ? ? 3.例如我需要处理串口接收到的数据(TDE模块),我需要获取串口中断发生的情况,需要用到定时器计数,需要用到串口中间层处理完毕后的数据。 当然我还需要一些功能函数

? ? ? ? 4.如果遇到更改IC的情况,只要我们硬件层和中间层做好的分离,我们只要稍微改动硬件层就可以,因为从目前逻辑来看,中间层实际也不和硬件直接相关。

? ? ? ? 5.如果我们在写应用层的时候,发现了统一的处理应用,我们也可以打包,让应用层也具有可移植性

最后:

? ? ? ? 1.最后我们初始化硬件,调用应用层就可以了,中间层已经被应用层调用过一遍了。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:42:58  更:2022-11-05 00:45:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:27:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码