关于单片机(裸机)分层框架的记录

单片机裸机程序如果需要方便移植的话,那么在写程序之前就需要规划好程序框架,在翻阅一些文章之后,发现大多数提及的框架都是大同小异的,接下来总结一下前人经验,提炼一个属于自己的框架,以便后续自己使用。
我将程序框架归结为:硬件抽象层,基础协议层(例如IIC/SPI/UART等),模块驱动层,上层应用层,每个层级之间尽量保证是单级调用,尽量保证不出现双向调用,降低程序的耦合度,其示意图如下所示。
在这里插入图片描述
硬件抽象层:向上提供接口用来反馈硬件情况,如:
①按键的硬件抽象层只需要向按键驱动层提供按键是否按下,将之映射到某个寄存器之上,例如KEY_DAT为硬件当前状态结果寄存器,如果此时按键一按下,我只需要将按键状态映射到KEY_DAT(KEY_DAT=KEY_DAT&按键一状态)
②LED的硬件抽象层只需要向上提供LED的当前状态(亮或者灭)以及LED的开与关的控制即可。
基础协议层:包含IIC/SPI/UART等常用协议的接口,如果需要移植的话只需要更改IIC的硬件映射即可,而不必改变模块驱动层的代码。
模块驱动层:此层需要调用硬件抽象层以及基础协议层向上提供的接口即可,如:
①按键模块接口层,在此层需要作出对按键单击/双击/长按/短按等状态的判别并将结果返回到上层应用层,即对上层应用层提供接口用于提供此时按键的功能状态。
②LED模块接口层,在此层LED模块驱动层需要对LED做出常亮/常灭/闪烁等状态的驱动。
上层应用层:在此层只需要对实现的功能进行逻辑的控制即可,不必关心下级状态,如:只要关心我调用了LED闪烁之后需要做什么,而不用关心我怎么去让LED进行闪烁。

以上纯属个人见解,有误之处还望大家指正。

版权声明:本文为CSDN博主「努力努力就能上天啊!」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44711012/article/details/122379644

生成海报
点赞 0

努力努力就能上天啊!

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许

STM32通用定时器的个人总结

STM32104ZET6系列的芯片中,定时器一共有一下三种分类: 高级定时器,通用定时器,基本定时器。 这里主要讲一下通用定时器,首先,计数器模式一共有三种&

机器的大脑(一)

每个人都有各自的梦想,但有一个梦想,也许是全人类共通的——那就是把自己从重复枯燥的工作中解脱出来,享受自由自在的悠闲时光。用机器替代人力,就是为了实现这个梦想。而运动控制器,