<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32筆記之十四:基本問題,來討論一下軟件架構(gòu)

          STM32筆記之十四:基本問題,來討論一下軟件架構(gòu)

          作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
          網(wǎng)上大家都在討論和學(xué)習(xí),但是對于架構(gòu)這個基本問題卻沒幾個人討論。個人認(rèn)為有個好的架構(gòu)是寫好代碼的基礎(chǔ),可以使后期的調(diào)式工作事半功倍?。?p>1、架構(gòu)組成:我的程序代碼分為四種結(jié)構(gòu)

          本文引用地址:http://www.ex-cimer.com/article/201611/322068.htm

          a)順序執(zhí)行代碼

          定義:按照順序逐行執(zhí)行的代碼

          優(yōu)點:是思路簡單,代碼可靠不易被干擾。

          缺點:占用資源

          用途:只用來各種變量、函數(shù)的定義,硬件的初始化程序

          位置:main.c的開始一直到main函數(shù)的while函數(shù)之前

          b)空閑執(zhí)行代碼

          定義:在CPU空閑的時候才執(zhí)行的代碼

          優(yōu)點:不占用資源

          缺點:執(zhí)行的實時性不能保證

          用途:非實時任務(wù),調(diào)試信息輸出,不重要的狀態(tài)指示

          位置:main.c的main函數(shù)的while函數(shù)內(nèi)部

          c)中斷執(zhí)行代碼

          定義:由軟硬件事件打斷整個程序而執(zhí)行的代碼

          優(yōu)點:可以保證實時性,各種中斷可以安排優(yōu)先順序

          缺點:關(guān)系相對復(fù)雜,互相之間容易干擾

          用途:觸發(fā)性的代碼,比如接收數(shù)據(jù),響應(yīng)外部設(shè)備,按鈕的相應(yīng)

          位置:stm32f10x_it.c內(nèi)部

          d)循環(huán)執(zhí)行代碼

          定義:按照時間周期執(zhí)行的代碼

          優(yōu)點:定期自動執(zhí)行

          缺點:實時性不好

          用途:需要周期執(zhí)行的任務(wù),狀態(tài)檢查及相關(guān)信息輸出,數(shù)據(jù)記錄

          位置:stm32f10x_it.c的SysTickHandler內(nèi)部

          e)DMA自動代碼

          定義:不需要主程序干預(yù),外設(shè)自動執(zhí)行

          優(yōu)點:自動刷新數(shù)據(jù),不占用CPU資源

          缺點:不能控制

          用途:數(shù)據(jù)通信存儲,AD轉(zhuǎn)換

          位置:不需要

          2、架構(gòu)執(zhí)行順序圖


          關(guān)鍵詞: STM32軟件架

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();