中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

wampserver裝wordpress福建seo搜索引擎優(yōu)化

wampserver裝wordpress,福建seo搜索引擎優(yōu)化,西安駕校網(wǎng)站建設(shè),代表性設(shè)計(jì)制作作品圖片以串口接口為例介紹關(guān)于BSP底層架構(gòu)開(kāi)發(fā)的迭代過(guò)程 文章目錄 以串口接口為例介紹關(guān)于BSP底層架構(gòu)開(kāi)發(fā)的迭代過(guò)程架構(gòu)概述初代BSP二代BSP:三代BSP:四代BSP:架構(gòu)概述 單片機(jī)開(kāi)發(fā)有四個(gè)階段: 階段一:?jiǎn)我粏纹瑱C(jī)的功能實(shí)現(xiàn)階段 此階段你開(kāi)始熟悉STM32F1系列的單片機(jī),并利用…

以串口接口為例介紹關(guān)于BSP底層架構(gòu)開(kāi)發(fā)的迭代過(guò)程

文章目錄

  • 以串口接口為例介紹關(guān)于BSP底層架構(gòu)開(kāi)發(fā)的迭代過(guò)程
    • 架構(gòu)概述
    • 初代BSP
    • 二代BSP:
    • 三代BSP:
    • 四代BSP:

架構(gòu)概述

單片機(jī)開(kāi)發(fā)有四個(gè)階段:

階段一:?jiǎn)我粏纹瑱C(jī)的功能實(shí)現(xiàn)階段

此階段你開(kāi)始熟悉STM32F1系列的單片機(jī),并利用其完成相應(yīng)的功能,比如點(diǎn)了個(gè)燈,通過(guò)串口發(fā)了個(gè)”STM32F103 Hello World“,你完成了第一個(gè)工程,將其命名為STM32F103_Hello.

此階段不考慮單片機(jī)的移植性,只管實(shí)現(xiàn)功能,你可以在一個(gè)main函數(shù)寫(xiě)上幾千行的代碼,當(dāng)你覺(jué)得一個(gè)main函數(shù)的代碼太長(zhǎng)不好維護(hù)時(shí),即開(kāi)始進(jìn)入階段二:

階段二:?jiǎn)我粏纹瑱C(jī)的模塊化實(shí)現(xiàn)階段

此階段你已經(jīng)會(huì)使用STM32F1系列單片機(jī)的各種不同外設(shè),并打算將外設(shè)代碼進(jìn)行模塊化。

此階段不考慮單片機(jī)的移植性,但需要考慮代碼的復(fù)用性,你將main函數(shù)的幾千行代碼拆分成一個(gè)個(gè)的模塊,模塊間的調(diào)用完全隨性而為,低內(nèi)聚,高耦合的代碼隨處可見(jiàn),改動(dòng)一個(gè)模塊會(huì)影響太多其他模塊,當(dāng)你覺(jué)得需要對(duì)模塊進(jìn)行解耦,以實(shí)現(xiàn)標(biāo)準(zhǔn)化模塊間的復(fù)用時(shí),你就開(kāi)始進(jìn)入階段三:

階段三:同一廠商不同系列單片機(jī)的應(yīng)用層模塊復(fù)用實(shí)現(xiàn)階段

此階段你實(shí)現(xiàn)了代碼模塊化,會(huì)通過(guò)接口間的數(shù)據(jù)實(shí)現(xiàn)松散耦合調(diào)用

此階段你可以通過(guò)調(diào)用以前寫(xiě)好的應(yīng)用層模塊,來(lái)滿(mǎn)足更換同一廠商的不同單片機(jī)時(shí),只需改動(dòng)少量代碼的需求,然而對(duì)于大量硬件傳感器等外設(shè),不可能做到模塊復(fù)用,因?yàn)閭鞲衅鞯哪K太過(guò)依賴(lài)于底層接口的實(shí)現(xiàn),你要初始化它的引腳,就得調(diào)用它的時(shí)鐘使能接口方法,調(diào)用它的gpio庫(kù)初始化方法,要點(diǎn)個(gè)燈,就得調(diào)用它的gpio拉高拉低方法,而這些接口在同一廠商的不通系列單片機(jī)中,居然都會(huì)不一致。于是你不能忍,決定自己開(kāi)發(fā)一個(gè)接口更加標(biāo)準(zhǔn)化的庫(kù)。

階段四:不用廠商不同系列單片機(jī)的分層架構(gòu)實(shí)現(xiàn)階段

此階段你完成了BSP-SYSTEM-HARDWARE-APP四層架構(gòu),各個(gè)層次分工明確。BSP負(fù)責(zé)外設(shè)驅(qū)動(dòng)初始化,配置,調(diào)用引腳電平拉高拉低等,SYSTEM負(fù)責(zé)系統(tǒng)精確延時(shí),及時(shí)間片的輪詢(xún)處理,HARDWARE負(fù)責(zé)調(diào)用BSP的統(tǒng)一接口,實(shí)現(xiàn)各個(gè)傳感器或硬件的初始化及數(shù)據(jù)收發(fā),APP包含各種通信協(xié)議處理及控制邏輯處理,不同單片機(jī)通過(guò)加入不同的BSP,而SYSTEM-HARDWARE-APP都可以做到不變。

類(lèi)似的,我們的BSP底層架構(gòu)開(kāi)發(fā)也經(jīng)歷了若干版本。

初代BSP

最初的版本只限于單個(gè)單片機(jī)使用,底層和應(yīng)用層完全沒(méi)有隔離,經(jīng)??梢?jiàn)在main函數(shù)里操作GPIO庫(kù)函數(shù)的情況,這種架構(gòu)模式的好處是開(kāi)發(fā)簡(jiǎn)單,不用考慮復(fù)雜的移植性,因此耦合度過(guò)高,同廠商不同內(nèi)核的單片機(jī)移植,都會(huì)改動(dòng)大量代碼。

初版的串口驅(qū)動(dòng)接口是這個(gè)樣的:

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);

假設(shè)某個(gè)應(yīng)用層要引用它,就必須得包含USART_TypeDef*這個(gè)定義的文件,如果不同的廠商串口結(jié)構(gòu)定義不是這個(gè)怎么辦。

在迭代中我們想到用USART_t給USART_TypeDef*取別名

typedef USART_TypeDef* USART_t;

隨著gpio口和dma操作的增加,這種取別名的方式,也不能解決問(wèn)題,有些結(jié)構(gòu)體內(nèi)部的成員名都不相同。

于是,我們對(duì)BSP架構(gòu)進(jìn)行了升級(jí),使其可以兼容更多單片機(jī)甚至國(guó)產(chǎn)化的單片機(jī)。

二代BSP:

方法是建立BSP-SYSTEM-HARDWARE-APP四層架構(gòu)。

其中不同系列的單片機(jī)使用不同BSP框架,保留相同命令的接口,SYSTEM-HARDWARE-APP如果需要調(diào)用這個(gè)接口,只需要引用XXX系列單片機(jī)目錄下的BSP頭文件。

這個(gè)版本的串口驅(qū)動(dòng)接口是這個(gè)樣的:

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://m.risenshineclean.com/news/62688.html

相關(guān)文章:

  • 江蘇專(zhuān)業(yè)網(wǎng)站制作公司新品牌推廣方案
  • flash 做ppt的模板下載網(wǎng)站刷粉網(wǎng)站推廣快點(diǎn)
  • 蘭州專(zhuān)業(yè)做網(wǎng)站網(wǎng)站制作網(wǎng)站推廣
  • 什么網(wǎng)站可以做設(shè)計(jì)兼職在線(xiàn)查網(wǎng)站的ip地址
  • h5網(wǎng)站制作報(bào)價(jià)app推廣方案模板
  • 博客網(wǎng)站制作以網(wǎng)絡(luò)營(yíng)銷(xiāo)為主題的論文
  • 婚戀網(wǎng)站如何做自媒體營(yíng)銷(xiāo)環(huán)球軍事網(wǎng)最新軍事新聞最新消息
  • 網(wǎng)站建設(shè)授權(quán)書(shū)百度客服聯(lián)系方式
  • 閔行區(qū)做網(wǎng)站公司寧德市教育局
  • 網(wǎng)站建設(shè)公司怎么找業(yè)務(wù)seo查詢(xún)平臺(tái)
  • 陜西手機(jī)網(wǎng)站建設(shè)武漢網(wǎng)站推廣
  • 免費(fèi)建網(wǎng)站平臺(tái)哪個(gè)好網(wǎng)頁(yè)搜索快捷鍵
  • 營(yíng)口建設(shè)工程質(zhì)量監(jiān)督站網(wǎng)站營(yíng)銷(xiāo)推廣軟文案例
  • 做網(wǎng)站制作公司百度搜索引擎盤(pán)搜搜
  • wordpress 文章如何添加附件seo網(wǎng)絡(luò)優(yōu)化軟件
  • 做視頻網(wǎng)站怎么備案免費(fèi)網(wǎng)站的平臺(tái)
  • cn域名建設(shè)網(wǎng)站需要備案嗎免費(fèi)網(wǎng)站推廣軟件下載
  • 怎么查詢(xún)網(wǎng)站有沒(méi)有做網(wǎng)站地圖武漢百度推廣多少錢(qián)
  • 衡陽(yáng)網(wǎng)站建設(shè)步驟免費(fèi)b站軟件推廣網(wǎng)站2023
  • 大豐做網(wǎng)站建設(shè)的公司東莞優(yōu)化seo
  • 杭州網(wǎng)站運(yùn)營(yíng)口碑營(yíng)銷(xiāo)例子
  • 那些賣(mài)外掛的怎么做的網(wǎng)站東莞營(yíng)銷(xiāo)網(wǎng)站建設(shè)優(yōu)化
  • 大氣集團(tuán)企業(yè)網(wǎng)站模板優(yōu)化排名 生客seo
  • 廈門(mén)做網(wǎng)站 廈門(mén)專(zhuān)業(yè)做網(wǎng)站的公司 我想做網(wǎng)站百度網(wǎng)盤(pán)怎么用
  • ui培訓(xùn)設(shè)計(jì)培訓(xùn)班簡(jiǎn)陽(yáng)seo排名優(yōu)化培訓(xùn)
  • 北京做網(wǎng)站比較好的如何注冊(cè)一個(gè)網(wǎng)站
  • 做網(wǎng)站掙錢(qián)快嗎口碑營(yíng)銷(xiāo)案例簡(jiǎn)短
  • wordpress 切換網(wǎng)站優(yōu)化排名軟件
  • 沈陽(yáng)做微網(wǎng)站河南網(wǎng)站seo推廣
  • cm域名做網(wǎng)站如何創(chuàng)建一個(gè)網(wǎng)頁(yè)