freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于arm的文本閱讀器電路設(shè)計(jì)-資料下載頁

2024-11-10 16:07本頁面

【導(dǎo)讀】同實(shí)現(xiàn)諸如實(shí)時(shí)控制、監(jiān)視、管理、移動(dòng)計(jì)算、數(shù)據(jù)處理等各種自動(dòng)化處理任務(wù)。成本、體積和功耗等的要求。例如,高檔汽車、神舟飛船和長征?;鸺?、導(dǎo)彈的制導(dǎo)系統(tǒng)都有嵌入式系統(tǒng)。在日常生活中也有很多嵌入式系統(tǒng)的應(yīng)。例如,全自動(dòng)洗衣機(jī)、電腦、電飯煲、手機(jī)、MP3等。事實(shí)上,幾乎帶有。智能的家電設(shè)備都是嵌入式系統(tǒng)的應(yīng)用。現(xiàn)在人們的環(huán)保意識(shí)越來越高,低碳經(jīng)濟(jì)和循環(huán)經(jīng)濟(jì)慢慢成為經(jīng)濟(jì)的主流。計(jì)算機(jī)、通信、消費(fèi)電子一體化程度越來越高,新穎的消費(fèi)電子產(chǎn)品從出不窮,深刻的改變著人們的生活方式。知識(shí)的載體—書籍也面臨著革命性變化,在手機(jī)、MP3、MP4等消費(fèi)電子產(chǎn)品,電子閱讀器是其不可或缺的工具之一。本設(shè)計(jì)中選擇使用ARM處理器,它功能強(qiáng)大,非常適合復(fù)雜系統(tǒng)的應(yīng)用,由于節(jié)能的特點(diǎn),ARM處理器非常適用于便攜。成為占全世界最多數(shù)的32位架構(gòu)之一。除此之外,LPC2103還配備了許多實(shí)用的外設(shè),由模塊。Windows集成開發(fā)環(huán)境CodeWarrior,調(diào)試器AXD以及格式轉(zhuǎn)換器FROMELF。

  

【正文】 void TaskIsTHUMB(INT8U prio); μ C/OSII 操作系統(tǒng)使用結(jié)構(gòu)常量 OS_STK_GROWTH 來指定堆棧的生長方式: 置 OS_STK_GROWTH 為 0 表示堆棧從下往上生長。 置 OS_STK_GROWTH 為 1 表示堆棧從上往下生長。 雖然 ARM 處理器核對(duì)于兩種方式均支持,但 ADS 的 C 語言編譯器僅支持一種方式,即從上往下生長,并且必須是滿遞減堆棧,所以 OS_STK_GROWTH的值為 1,設(shè)置如下: define OS_STK_GROWTH 1 編寫 在編寫任務(wù)堆棧初始化函數(shù) OSTaskStkInit() 之前,必須先根據(jù)處理器的結(jié)構(gòu)和特點(diǎn)確定任務(wù)的堆棧結(jié)構(gòu)。本移植的堆棧結(jié)構(gòu)如圖 所示 : 圖 31 μ C/OSII的堆棧 結(jié)構(gòu) Structure of stack in μC/OSII 根據(jù)圖 31 可以寫出 任務(wù)堆棧初始化函數(shù) OSTaskStkInit() 的代碼,其代碼如下: OS_STK * OSTaskStkInit(void (*task)(void *pd),void *pdata,OS_STK *ptos,INT16U opt) { OS_STK *stk。 opt=opt。 stk=ptos。 *stk=(OS_STK)task。 *stk=(OS_STK)task。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=0。 *stk=(unsigned int)pdata。 *stk=(USER_USING_MODE|0x00)。 *stk=0。 return (stk)。 } 堆棧中的 OsEnterSum 比較特別,它不是 CPU 的寄存器,而是一個(gè)全局變量,目 的是用它來保存開關(guān)中斷的次數(shù)。這樣,用戶在任務(wù)中就不必過分考慮開關(guān)中斷對(duì)其他任務(wù)的影響。 μ C/OSII 操 作 系 統(tǒng) 分 別 使 用 宏 OS_ENTER_CRITICAL( ) 和OS_EXIT_CRITICAL( )來關(guān)中斷和開中斷。在 ARM 處理器核中可利用改變程序狀態(tài)寄存器 CPSR 中的相應(yīng)控制位實(shí)現(xiàn)。由于使用了軟件中斷,程序狀態(tài)寄存器CPSR 保存到程序狀態(tài)保存寄存器 SPSR 中,軟件中斷退出時(shí)會(huì)將 SPSR 恢復(fù)到CPSR 中,所以程序只要改變程序狀態(tài)保存寄存器 SPSR 中的相應(yīng)控制位即可。 關(guān)中斷宏 OS_ENTER_CRITICAL( )的實(shí)現(xiàn)代碼如下: __asm { MRS R0,SPSR ORR RO,R0,NoInt MSR SPSR_c,R0 } OsEnterSum++。 開中斷宏 OS_EXIT_CRITICAL( )的實(shí)現(xiàn)代碼與關(guān)中斷類似,這里就不列寫出來了。 在 中還有其他一些需要移植的函數(shù),這里就不一一介紹了,見附錄。 在 文件 中,主要包括軟件中斷服務(wù)程序的匯編語言部分,OS_TASK_SW( ) 和 OSIntCtxSw( ) 以 及 啟動(dòng) 最高 優(yōu)先 級(jí) 就緒 任務(wù) 函 數(shù)OSStartHighRdy( )。 這里只介紹一下啟動(dòng)最高優(yōu)先級(jí)就緒任務(wù)函數(shù) OSStartHighRdy( )函數(shù)的實(shí)現(xiàn),其代碼如下: __OSStartHighRdy MSR CPSR_c,(NoInt|SYS32Mode) LDR R4,=OSRunning MOV R5,1 STRB R5,[R4] BL OSTaskSwHook LDR R6,=OSTCBHighRdy LDR R6,[R6] B OSIntCtxSw_1 系統(tǒng)編程實(shí)現(xiàn) 系統(tǒng)軟件框圖 發(fā)送郵箱 開始 系統(tǒng)初始化,創(chuàng)建四個(gè)任務(wù) 上位機(jī)通信任務(wù),任務(wù)優(yōu)先級(jí) 5 鍵盤接口任務(wù),任務(wù)優(yōu)先級(jí) 8 SD卡通信任務(wù),任務(wù)優(yōu)先級(jí) 11 液晶顯示任務(wù),任務(wù)優(yōu)先級(jí) 15 串口中斷服務(wù)程序 發(fā)送信號(hào)量 發(fā)送郵箱 相互發(fā)送郵箱 圖 32 系統(tǒng)軟件框圖 Structure of the software of system SD 卡讀寫模塊編程實(shí)現(xiàn) SD 讀寫模塊整體框架 使用實(shí)時(shí)操作系統(tǒng)由本模塊 文件中的宏定義 SD_UCOSII_EN 來使能或禁止。 圖 33 SD卡讀寫模塊結(jié)構(gòu)圖 Chart of read and write module of SD card 各層的特點(diǎn)如下: (1) 硬件抽象層:讀寫 SD 卡的硬件條件配置,與硬件相關(guān)的函數(shù); (2) 命令層: SD 卡的相關(guān)命令以及卡與主機(jī)之間數(shù)據(jù)流的控制,這一層與硬件無關(guān); (3) 應(yīng)用層:向用戶應(yīng)用程序或文件系統(tǒng)提供操作卡的 API 函數(shù)。如果采用操作系統(tǒng),這一層由實(shí)時(shí)操作系統(tǒng)控制。 SD 讀寫模塊程序流程圖 圖 34 主函數(shù)流程 圖 Flow chart of the main function SD 讀寫模塊程序具體實(shí)現(xiàn) 1. SD 卡初始化 對(duì) SD 卡先下電,再上電后,對(duì) SPI 總線接口進(jìn)行初始化。檢 測卡是否完全插入的卡座的 I/O 引腳初始化為 GPIO,并且設(shè)置為輸入口。檢測卡是否寫保護(hù)的 I/O 引腳初始化為 GPIO,并且設(shè)置為輸入口。 2. SD 卡單塊寫操作 SD 卡在 SPI 模式下的寫操作包括兩種:寫單塊和寫多塊。本示例重點(diǎn)介紹寫單塊操作??ǔ跏蓟瘮?shù) SD_Initialize()已經(jīng)調(diào)用了 SpiCmd_Set_BlockLen()函數(shù)設(shè)定了讀 /寫數(shù)據(jù)塊的長度 SD_BLOCKSIZE 字節(jié),卡在初始化后,讀 /寫都是以塊為單位,一次寫操作至少要寫 SD_BLOCKSIZE 字節(jié)。 SD_BLOCKSIZE 字節(jié)一般都為 512 字節(jié)。 SD 卡單塊寫操作流程圖如圖 35 所示。 圖 35 SD卡單塊寫操作流程 圖 Flow chart of single write of SD card 寫單塊是這樣進(jìn)行的: (1) 主機(jī)檢測卡是否完全插入到卡座中; (2) 主機(jī)檢測卡是否寫保護(hù); (3) 以上條件滿足后,主機(jī)向卡發(fā)送寫單塊命令,寫入地址為 blockaddr 的一個(gè)數(shù)據(jù)塊; (4) 主機(jī)緊跟這向卡發(fā)送要寫入的數(shù)據(jù)塊,數(shù)據(jù)塊長度為 SD_BLOCKSIZE。 3. SD 卡單塊讀操作 SD 卡 在 SPI 模式下的讀操作也包括兩種:讀單塊和讀多塊。本示例重點(diǎn)介紹讀單塊操作??ǔ跏蓟瘮?shù) SD_Initialize()已經(jīng)調(diào)用了 SpiCmd_Set_BlockLen()函數(shù)設(shè)定了讀 /寫數(shù)據(jù)塊的長度 SD_BLOCKSIZE 字節(jié)。卡在初始化后,讀 /寫都是以塊為單位,所以一次讀操作至少要讀 SD_BLOCKSIZE 個(gè)字節(jié)。SD_BLOCKSIZE 字節(jié)一般都為 512 字節(jié)。 SD 卡單塊讀操作流程圖如圖 36 所示。 圖 36 SD卡單塊讀操作流程 圖 Flow chart of single read of SD card 讀單塊是這樣進(jìn)行的 : (1) 主機(jī)首先檢查卡是否已經(jīng)完全插入卡座中; (2) 檢查塊地址是否超出卡的容量范圍; (3) 以上條件滿足后,向卡發(fā)送讀單塊命令,讀取地址為 blockaddr 的一個(gè)數(shù)據(jù)塊; (4) 調(diào)用讀取塊數(shù)據(jù)函數(shù)從卡讀取一個(gè)數(shù)據(jù)塊。 系統(tǒng)各任務(wù)實(shí)現(xiàn) 上位機(jī)通信任務(wù) 上位機(jī)通信任務(wù)的程序框圖如圖 37 所示: 圖 37 上位機(jī)通信任務(wù)的程序框圖 Program structure of the process of munication with PC 上位機(jī) 通信任務(wù)的優(yōu)先級(jí)為系統(tǒng)的最高優(yōu)先級(jí)別,當(dāng)上位機(jī)通信任務(wù)準(zhǔn)備就緒后,會(huì)被立即執(zhí)行。 上位機(jī)通信任務(wù)需要接收到串口中斷服務(wù)程序的信號(hào)量后才能就緒,不然會(huì)一直被掛起,使得鍵盤接口任務(wù)成為實(shí)際上最高的優(yōu)先級(jí)任務(wù)。 當(dāng)上位機(jī)通信任務(wù)得到執(zhí)行時(shí),首先會(huì)接收上位機(jī)傳來的信息,接收完所以信息后,會(huì)向 SD 卡通信任務(wù)發(fā)送消息郵箱,通知 SD 卡通信任務(wù)有新數(shù)據(jù)到達(dá)。然后把自身掛起,直到再次接收到串口中斷服務(wù)程序的信號(hào)量 。 鍵盤接口 任務(wù) 接收上位機(jī)的命令和數(shù)據(jù),并保存到單片機(jī)中 發(fā)送消息郵箱給 SD卡通信任務(wù) 掛起 有信號(hào)量? 是 否 其實(shí)在系統(tǒng)運(yùn)行的大部分時(shí)間內(nèi),鍵盤接口任務(wù)處于最高的優(yōu)先級(jí),因?yàn)樯衔粰C(jī)通信任務(wù)在絕大部分時(shí)間內(nèi)是被掛起的。 鍵盤接口任務(wù)得到執(zhí)行后,會(huì)不斷的掃描鍵盤,同時(shí)為了低優(yōu)先級(jí)別的任務(wù)得到運(yùn)行,如 SD 卡通信接口和液晶顯示任務(wù)得到運(yùn)行,會(huì)不斷的掛起自身一段時(shí)間,使得 SD 卡通信接口和液晶顯示任務(wù)能夠順利得到運(yùn)行。 當(dāng)鍵盤接口任務(wù)掃描出按鍵按下后,會(huì)識(shí)別是哪個(gè)鍵按下,然后發(fā)送消息郵箱給液晶顯示接口任務(wù),然后會(huì)把自身掛起更長時(shí)間,以使得液晶顯示任務(wù)能夠快速的顯示出相應(yīng)的結(jié)果。 SD 卡 通信任務(wù) SD 卡通信任務(wù)很多時(shí)間被掛起,當(dāng)有來自上位機(jī)通信任務(wù)或者液晶顯示任務(wù)的信號(hào)量或消息郵箱時(shí), SD 卡通信任務(wù)將在鍵盤接口任務(wù)掛起時(shí)得到運(yùn)行。 當(dāng)有來自上位機(jī)通信任務(wù)的信號(hào)量時(shí), SD 卡通信任務(wù)就緒,當(dāng)比其優(yōu)先級(jí)高的任務(wù)都被掛起時(shí)將得到運(yùn)行,將上位機(jī)中的數(shù)據(jù)傳入 SD 卡中,或者根據(jù)命令刪除 SD 卡中的某些內(nèi)容。完成后, SD 卡通信任務(wù)將自身掛起。 當(dāng)有來自液晶顯示器的消息郵箱時(shí), SD 卡通信任務(wù)就緒,當(dāng)比其優(yōu)先級(jí)高的任務(wù)都被掛起時(shí)將得到運(yùn)行, SD 卡通信任務(wù)根據(jù)液晶顯示任務(wù)發(fā)來的郵箱內(nèi)容,將相應(yīng)內(nèi)容讀出,放到 另一個(gè)郵箱中,然后發(fā)送給液晶顯示任務(wù),完成后,將自身掛起。 液晶顯示任務(wù) 液晶顯示 任務(wù)主要是完成內(nèi)容的顯示功能,當(dāng)鍵盤接口任務(wù)掃描出按鍵按下后,會(huì)識(shí)別是哪個(gè)鍵按下,然后發(fā)送消息郵箱給液晶顯示接口任務(wù),然后會(huì)把自身掛起更長時(shí)間,以使得液晶顯示任務(wù)能夠快速的顯示出相應(yīng)的結(jié)果。 當(dāng)液晶顯示任務(wù)接收到鍵盤的命令后,將會(huì)跟據(jù)不同的鍵值執(zhí)行不同的操作,如果需要顯示的內(nèi)容在液晶顯示任務(wù)的緩存中,則直接顯示,當(dāng)沒有在自身的緩存中時(shí),則會(huì)向 SD 卡通信任務(wù)發(fā)送消息郵箱,使 SD 卡通信任務(wù)將相應(yīng)的數(shù)據(jù)傳送到液晶顯示任 務(wù)的緩存中,然后發(fā)送消息郵箱給液晶顯示任務(wù),通知液晶顯示任務(wù)數(shù)據(jù)已經(jīng)送到緩存中,液晶顯示任務(wù)讀取緩存中的數(shù)據(jù),然后顯示到液晶中,最后,將自身掛起,等待消息郵箱從而重新就緒任務(wù)。 總結(jié) 經(jīng)過近四個(gè)月的努力,本次畢業(yè)設(shè)計(jì)的所有工作全部完成。 本次畢業(yè)設(shè)計(jì)雖然只是簡單的文本閱讀器,但它卻是對(duì)大學(xué)四年學(xué)習(xí)的總結(jié)。通過此次畢業(yè)設(shè)計(jì),我初步掌握了基于 ARM 的嵌入式系統(tǒng)設(shè)計(jì)方法,進(jìn)一步學(xué)習(xí)了 Keil、 Proteus 等電子設(shè)計(jì)開發(fā)和仿真軟件的使用。設(shè)計(jì)了一個(gè)以LPC2103 為控制核心,同時(shí)采用了實(shí)時(shí) 多任務(wù)操作系統(tǒng)μ C/OSII 作為操作系統(tǒng),使用操作系統(tǒng)的編程方法實(shí)現(xiàn)對(duì) SD 卡的控制,接收上位機(jī)下傳的數(shù)據(jù),存入 SD中,并能將內(nèi)容顯示在系統(tǒng)的液晶上的文本閱讀器。實(shí)現(xiàn)了將數(shù)據(jù)從 LPC2103存入 SD 卡,并從 SD 卡中讀取顯示在液晶,實(shí)現(xiàn)了文本閱讀器的基本功能,達(dá)到了畢業(yè)設(shè)計(jì)課題的要求。 在設(shè)計(jì)過程中曾遇到過許多難題,通過查閱相關(guān)資料和動(dòng)手實(shí)踐,最終都一一解決。這一過程即是對(duì)以往所學(xué)的回顧和鞏固,也是對(duì)新的領(lǐng)域進(jìn)行的新的探索,這對(duì)于今后的學(xué)習(xí)和工作都具有重要的啟發(fā)和指導(dǎo)意義。
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1