性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

程序小白
認(rèn)證:優(yōu)質(zhì)創(chuàng)作者
所在專題目錄 查看專題
分享一個(gè)基于QP(事件驅(qū)動型程序構(gòu)架)實(shí)現(xiàn)的飛行射擊小游戲
【第一篇】單片機(jī)程序到底應(yīng)該怎么寫?
【第二篇】大話單片機(jī)軟件構(gòu)架
【第三篇】嵌入式系統(tǒng)的事件驅(qū)動型編程技術(shù)第二版(書籍分享)
【第四篇】QP量子編程之入門體驗(yàn)
【第五篇】從(狀態(tài)圖)到(代碼)生成,一切交給軟件QM
作者動態(tài) 更多
基于stm32采用PWM驅(qū)動伺服控制器學(xué)習(xí)筆記
5天前
基于STM32驅(qū)動TM1638學(xué)習(xí)筆記——軟件篇
04-19 12:42
基于TM1638驅(qū)動8位數(shù)碼管設(shè)計(jì)分享
02-24 11:26
RT-Thread驅(qū)動之路: Studio創(chuàng)建FAL分區(qū)⑤
01-02 08:30
RT-Thread驅(qū)動之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

【第二篇】大話單片機(jī)軟件構(gòu)架

      開篇我們來一起侃侃曾用過的那些程序構(gòu)架,其實(shí)搞單片機(jī)軟件的真沒啥構(gòu)架可聊的,這是為啥,其實(shí)很多老工程師再和同事聊工作的時(shí)候也經(jīng)常會說正在研究程序的構(gòu)架,其實(shí)大部分程序都是順序構(gòu)架,那有什么好了解的呢,其實(shí)這里用構(gòu)架不太確切,與其說是構(gòu)架不如說是代碼風(fēng)格,這個(gè)的確是因人而異,五花八門的什么樣的都有,例如有一些比較特殊的,N個(gè).h文件對應(yīng)一個(gè)main.c,其實(shí)他在把.h當(dāng).c用,把變量函數(shù)和函數(shù)的定義都扔到.h文件中,雖然這么做不符合我們的常規(guī)套路,但是并不影響程序的正確性。如下圖:

   

      還有那種全代碼就一個(gè)函數(shù)指針,不停地給函數(shù)指針賦值,然后調(diào)用該函數(shù),這個(gè)說實(shí)話真的是把函數(shù)指針用的出神入化了,這種方式的應(yīng)用其實(shí)應(yīng)該是中有限狀態(tài)機(jī)理論的毒太深,曾經(jīng)我也中過,這種代碼風(fēng)格只是我們自己用自己的方式實(shí)現(xiàn)一種控制思想  ,沒接觸過這種風(fēng)格的代碼上來可能會有點(diǎn)蒙圈,當(dāng)然熟悉代碼也需要一定的時(shí)間。

      好一點(diǎn)的風(fēng)格就是模塊化編程,基本一個(gè).h文件對應(yīng)一個(gè).c文件,然后提供一個(gè)接口文件,這種風(fēng)格看起來更加的好理解一些,也比較符合常規(guī)的套路,如下圖:

      但是不論上面的哪一種方法其實(shí)最初的目的只是想跳出這個(gè)籠子。哪怕初心是拼盡全力想要擺脫那種意大利面條式的編程方式,不想用N層if/else嵌套實(shí)現(xiàn)狀態(tài)模式控制,最終還是回到了順序式編程的框架,問題的根本在于我們靠一己之力,無法完成系統(tǒng)層部分,因?yàn)橐粋€(gè)好的框架需要管理我們的代碼,其核心的實(shí)現(xiàn)涉及到數(shù)據(jù)結(jié)構(gòu),算法等等一系列吃基礎(chǔ)的東西,從零打造一個(gè)構(gòu)架也不是我們的目的,我們的目的只是想要我們的代碼跳出這個(gè)框框。

      下面開始介紹我們的豬腳:基于事件驅(qū)動型程序構(gòu)架,這里我們先舉個(gè)例子,這個(gè)構(gòu)架都應(yīng)用在哪些領(lǐng)域,桌面應(yīng)用程序開發(fā),手機(jī)APP開發(fā),Linux驅(qū)動應(yīng)用開發(fā),基本上那些我們或許有點(diǎn)接觸的不屬于我們這領(lǐng)域的項(xiàng)目,都是基于這種程序構(gòu)架進(jìn)行開發(fā)。

      事件驅(qū)動型程序構(gòu)架的核心:事件,只要舉個(gè)例子你就理解了,PC機(jī)按下鍵盤、點(diǎn)擊鼠標(biāo) 都會產(chǎn)生一個(gè)事件,在我們的單片機(jī)中當(dāng)你加入RTOS以后,最重要的一個(gè)東西叫做系統(tǒng)心跳(systemtick),這個(gè)在系統(tǒng)中被稱為一個(gè)系統(tǒng)事件,總結(jié)一下,有系統(tǒng)的地方就有事件,總結(jié)一下:系統(tǒng)的構(gòu)架也是采用基于事件驅(qū)動型程序構(gòu)架來設(shè)計(jì)的,雖然我們在單片機(jī)上移植了系統(tǒng),也可以在應(yīng)用開發(fā)中使用事件進(jìn)行設(shè)計(jì),但是我們的應(yīng)用程序還不能算是一個(gè)具備是驅(qū)動型程序構(gòu)架的軟件。

      要打造一個(gè)事件驅(qū)動型構(gòu)架我們都需要那些組成部分呢(這里也可以稱為組件):事件、事件處理器(層次性)、對象(應(yīng)用程序中的基本要素),系統(tǒng)框架(實(shí)現(xiàn)對象機(jī)制的必備部分)等等,例如QP提供的構(gòu)架,如下:

      如果大家對事件驅(qū)動型編程比較感興趣,推薦大家可以學(xué)一下quantunleaps(量子編程)它提供了一個(gè)平臺供大家學(xué)習(xí),百度輸入一下名稱官方網(wǎng)站就出來了,后面會基于QP來分享一下核心的內(nèi)容,和大家一起學(xué)習(xí)。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 10
收藏 11
關(guān)注 150
成為作者 賺取收益
全部留言
0/200
  • dy-hBP6LUqp 2020-09-05 14:04
    靈魂畫手
    回復(fù) 2條回復(fù)