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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机框架编程整理 -> 正文阅读

[嵌入式]单片机框架编程整理

单片机裸机编程框架

指导思想

  • 每一个电路模块单独编写驱动 程序。
  • 使用定时器或者cpu来进行时间调度(使用mcu编程框架)
    • 实现非阻塞式的程序调度体系。
  • 文件分层、同级之间不可以互相调用数据
    • 这样可以降低功能模块之间的耦合度,在统一平台下移植或者删减不同的功能模块之时,不会影响其他模块的功能。
  • 各个子文件建立自己的缓冲数据域,使用函数接口的方式来实现缓冲数据的访问。
    • 详细的原因在下面展开叙述。
  • 规范代码书写要求,统一变量和函数的命名格式方便阅读。
  • 某个硬件不正常工作,不能影响其他的硬件。
  • 函数和数据分开控制,不受时间约束。

电路整体的逻辑分层框架

  • 如下图所示:
    在这里插入图片描述

bsp层模块的开发方法

  • 典型:中断类型服务函数的编写
    • step1:查询相应状态标志位。
    • step2:清除状态标志位
    • step3:编写中断服务函数
      • ** 越短越好最好仅仅指示记录一些标志状态位,逻辑处理放到前台程序里面执行。**
      • 符合“快进快出”原则。
  • bsp层尽量不开辟自己的数据缓冲区。

driver层编写方法

  • 驱动层需要提供中断服务函数的具体函数,并且调用bsp层的回调函数注册接口,来实现相关中断外设的数据部分处理。
  • 驱动函数部分,要开辟自己的数据缓冲区,
  • 为了降低使用extern的频率,我们开辟对外的数据缓冲区访问接口,数组则传出首地址(比如,串口的环形缓冲区);

应用层编写方法

  • 应用层之间不允许互相调用接口,必须完全不具有耦合性。
  • 应用层需要处理的数据,都要通过下一级的驱动层数据缓冲访问接口来获取。
  • 尽量少使用extern关键字。

数据之间的交互

  • 整个系统的数据可以分成以下几类:
    • 复杂外设的句柄封装
      • 类似于stm32等复杂外设,需要建立外设句柄之时,该句柄作为内部变量使用,除了在it文件里面可以使用extern之外,不再对外访问使用。
    • 从外设获取的各种数据
      • 此类数据我们可以放置在应用层的数据缓冲区里,在应用层被处理。
    • 全局变量(自上而下的数据)
      • 此类数据的特点是增大了耦合性,它可能会作用在所有的app应用中。
      • 我们可以使用一个头文件和源文件,头文件里面定义出它的数据类型,源文件里面则把初始化以及参数检查,参数保存等及接口实现,此时往往会调用EEprom或者dataflash模块。

头文件之间的包含关系

  • bsp文件包含所有最基础的(如:数据类型,通用模块)头文件模块。
  • driver部分的头文件,只包含用到的bsp.h文件即可。
  • driver部分的源文件,只要去包含自己同名的模块头文件。
  • app部分的头文件,只包含所有的用到的驱动头文件。
  • app部分的源文件,只包含自己同名模块的头文件。
  • main部分只包含所有的app头文件。

应用层的初始化函数包含关系

  • 应用层的初始化调用驱动层的初始化,驱动层的初始化->bsp初始化。

应用层的初始化函数包含关系

  • 应用层的初始化调用驱动层的初始化,驱动层的初始化->bsp初始化。
  • main函数只用来包含应用层的初始化,不在包含被调用外设的初始化。
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:46:50  更:2021-07-11 16:48:02 
 
开发: 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 18:32:41-

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