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

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 一種多功能錄擴音系統(tǒng)的設(shè)計方案

          一種多功能錄擴音系統(tǒng)的設(shè)計方案

          作者: 時間:2018-09-05 來源:網(wǎng)絡(luò) 收藏

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

          3 軟件設(shè)計

          目前,可供選擇的操作系統(tǒng)很多,在這里我們采用µC/OS-II.µC/OS-II具有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和可擴展性強等特點,最小內(nèi)核可編譯至2KB.

          3.1 µC/OS-II初始化啟動設(shè)計

          在使用µC/OS-I的所有服務(wù)之前,必須使用函數(shù)OSInit()實現(xiàn)初始化,對所有全局變量和數(shù)據(jù)結(jié)構(gòu)進行初始化。同時OSInit()函數(shù)會創(chuàng)建一個空閑任務(wù)OSTaskIdle,為該任務(wù)分配最低優(yōu)先級并使之處于就緒狀態(tài)。如果用戶應(yīng)用程序還要使用統(tǒng)計任務(wù),則建立統(tǒng)計任務(wù)OSTaskstat()并讓它進入就緒態(tài),此任務(wù)的優(yōu)先級設(shè)為OS_LOWESTPRIG_1,系統(tǒng)的初始化過程如圖6所示。

          3.2 μC/OS-II的移植設(shè)計

          mC/OS-II的文件系統(tǒng)結(jié)構(gòu)包括核心代碼部分、設(shè)置代碼部分、與處理器相關(guān)的移植代碼部分。其中最上邊的軟件應(yīng)用層是mC/OS-II上的代碼。核心代碼部分包括7個源代碼文件和1個頭文件。功能分別是內(nèi)核管理、事件管理、消息隊列管理、存儲管理、消息管理、信號量處理、任務(wù)調(diào)度和定時管理。設(shè)置代碼部分包括2個頭文件,用來配置事件控制塊的數(shù)目以及是否包含消息管理相關(guān)代碼。而與處理器相關(guān)的移植代碼部分則是進行移植過程中需要更改的部分,包括1個頭文件OS_CPU.H,1個匯編文件OS_CPU_A.S和1個C代碼文件。

          實際上將mC/OS-II移植到AT91RM9263處理器上,需要完成的工作主要是以下三個與體系結(jié)構(gòu)相關(guān)的文件:OS_CPU.H,OS_CPU.C以及OS_CPU_A.S.

          3.3 主程序流程

          控制程序主程序流程圖如圖7所示,其中包括時間校正、錄音、放音、播放時間設(shè)置、播放選擇等六個子程序。

          4 結(jié)束語

          本文提出的一種多功能錄擴音系統(tǒng)的設(shè)計方案,該方案充分發(fā)揮了ARM接口豐富的特點,移植了高效、穩(wěn)定的µC/OS-II操作系統(tǒng)后,具有擴音、錄音、放音等多種功能,適應(yīng)了電力系統(tǒng)安全生產(chǎn)的需要。經(jīng)實驗證明,本方案具有較強的實用性。


          上一頁 1 2 下一頁

          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(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); })();