当前位置: 首页 > news >正文

wordpress开发视频网站百度登陆页面

wordpress开发视频网站,百度登陆页面,做网站怎么选择服务器,cms开源系统php以串口接口为例介绍关于BSP底层架构开发的迭代过程 文章目录 以串口接口为例介绍关于BSP底层架构开发的迭代过程架构概述初代BSP二代BSP:三代BSP:四代BSP:架构概述 单片机开发有四个阶段: 阶段一:单一单片机的功能实现阶段 此阶段你开始熟悉STM32F1系列的单片机,并利用…

以串口接口为例介绍关于BSP底层架构开发的迭代过程

文章目录

  • 以串口接口为例介绍关于BSP底层架构开发的迭代过程
    • 架构概述
    • 初代BSP
    • 二代BSP:
    • 三代BSP:
    • 四代BSP:

架构概述

单片机开发有四个阶段:

阶段一:单一单片机的功能实现阶段

此阶段你开始熟悉STM32F1系列的单片机,并利用其完成相应的功能,比如点了个灯,通过串口发了个”STM32F103 Hello World“,你完成了第一个工程,将其命名为STM32F103_Hello.

此阶段不考虑单片机的移植性,只管实现功能,你可以在一个main函数写上几千行的代码,当你觉得一个main函数的代码太长不好维护时,即开始进入阶段二:

阶段二:单一单片机的模块化实现阶段

此阶段你已经会使用STM32F1系列单片机的各种不同外设,并打算将外设代码进行模块化。

此阶段不考虑单片机的移植性,但需要考虑代码的复用性,你将main函数的几千行代码拆分成一个个的模块,模块间的调用完全随性而为,低内聚,高耦合的代码随处可见,改动一个模块会影响太多其他模块,当你觉得需要对模块进行解耦,以实现标准化模块间的复用时,你就开始进入阶段三:

阶段三:同一厂商不同系列单片机的应用层模块复用实现阶段

此阶段你实现了代码模块化,会通过接口间的数据实现松散耦合调用

此阶段你可以通过调用以前写好的应用层模块,来满足更换同一厂商的不同单片机时,只需改动少量代码的需求,然而对于大量硬件传感器等外设,不可能做到模块复用,因为传感器的模块太过依赖于底层接口的实现,你要初始化它的引脚,就得调用它的时钟使能接口方法,调用它的gpio库初始化方法,要点个灯,就得调用它的gpio拉高拉低方法,而这些接口在同一厂商的不通系列单片机中,居然都会不一致。于是你不能忍,决定自己开发一个接口更加标准化的库。

阶段四:不用厂商不同系列单片机的分层架构实现阶段

此阶段你完成了BSP-SYSTEM-HARDWARE-APP四层架构,各个层次分工明确。BSP负责外设驱动初始化,配置,调用引脚电平拉高拉低等,SYSTEM负责系统精确延时,及时间片的轮询处理,HARDWARE负责调用BSP的统一接口,实现各个传感器或硬件的初始化及数据收发,APP包含各种通信协议处理及控制逻辑处理,不同单片机通过加入不同的BSP,而SYSTEM-HARDWARE-APP都可以做到不变。

类似的,我们的BSP底层架构开发也经历了若干版本。

初代BSP

最初的版本只限于单个单片机使用,底层和应用层完全没有隔离,经常可见在main函数里操作GPIO库函数的情况,这种架构模式的好处是开发简单,不用考虑复杂的移植性,因此耦合度过高,同厂商不同内核的单片机移植,都会改动大量代码。

初版的串口驱动接口是这个样的:

void USART_driverInit(USART_TypeDef* USARTx, uint32_t baudRate, uint8_t preemptionPriority, uint8_t subPriority);void USART_sendByte(USART_TypeDef* USARTx, uint8_t byte);
void USART_sendMsg(USART_TypeDef* USARTx, uint8_t *sendBuf, uint32_t len);void USART1_dmaTxIsr(void);
void USART2_dmaTxIsr(void);
void USART3_dmaTxIsr(void);
void UART4_dmaTxIsr(void);void USART1_recvIsr(void);
void USART2_recvIsr(void);
void USART3_recvIsr(void);
void UART4_RecvIsr(void);

假设某个应用层要引用它,就必须得包含USART_TypeDef*这个定义的文件,如果不同的厂商串口结构定义不是这个怎么办。

在迭代中我们想到用USART_t给USART_TypeDef*取别名

typedef USART_TypeDef* USART_t;

随着gpio口和dma操作的增加,这种取别名的方式,也不能解决问题,有些结构体内部的成员名都不相同。

于是,我们对BSP架构进行了升级,使其可以兼容更多单片机甚至国产化的单片机。

二代BSP:

方法是建立BSP-SYSTEM-HARDWARE-APP四层架构。

其中不同系列的单片机使用不同BSP框架,保留相同命令的接口,SYSTEM-HARDWARE-APP如果需要调用这个接口,只需要引用XXX系列单片机目录下的BSP头文件。

这个版本的串口驱动接口是这个样的:

typedef USART_TypeDef* USART_Type_t;
typedef struct USART_Struct* USART_t;
typedef struct USART_Struct
{USART_Type_t usart;uint32_t baudRate;  uint8_t priority;uint8_t subPriority;uint16_t parity;uint16_t stopBits;uint16_t wordLength;uint32_t RS485Delay;USART_Config_t config; USART_Transport_t *send;USART_Transport_t *receive;uint32_t timeout;uint32_t linkCount;bool isRS485Connected;void (*USART_TypeInit)(USART_t USART);void (*USART_SendByte)(USART_t USART, uint8_t byte);void (
http://www.yidumall.com/news/9990.html

相关文章:

  • 上海正规做网站公司有哪些产品线上营销有哪些方式
  • 现在进出深圳最新规定seo公司上海牛巨微
  • 创办网站公司软文案例短篇
  • 临朐县哪里有做网站的国家免费职业培训平台
  • 在线免费视频网站推广杭州百度推广开户
  • 添加网站绑定主机名免费收录软文网站
  • 网站维护托管公司国际新闻最新消息中国
  • 做网站一些专业术语商品热搜词排行榜
  • 公司的网站费怎样做会计分录网络平台有哪些?
  • 游戏网站开发公司什么是网站推广?
  • 北京网站建设优化学校域名访问网站入口
  • 网站站群建设方案百度关键词优化多少钱一年
  • 西安网站空间怎么在百度上做网站
  • 济宁网站建设公司怎么样商品标题关键词优化
  • 网站返回首页怎么做的好看软文推广产品
  • 网推平台有哪些比较好seo外链怎么做
  • 建一个商城网站需要多久2022知名品牌营销案例100例
  • 杭州行业网站建设公司百度竞价托管靠谱吗
  • 做网站的主流技术我要学电脑哪里有短期培训班
  • 网站设计制作新报价图片怎么才能在百度上做引流呢
  • 淮安市汽车网站建设背景济南网站推广公司
  • 黄江网站仿做长春百度网站快速排名
  • 南宁设计网站百度一下网页版搜索引擎
  • 西安做网站哪家公司好保定网站建设报价
  • wordpress jiathis 文章 去除seo软件推荐
  • 潮阳网站建设公司浙江新手网络推广
  • redis 缓存 wordpress在线观看的seo综合查询
  • 成都 网站建设推广赚钱一个50元
  • 各电商网站的特点seo工资水平
  • 邢台专业网站建设公司推荐如何在百度做免费推广产品