基于物聯(lián)網(wǎng)的安保系統(tǒng)軟件設(shè)計(jì)-測(cè)控模塊-畢業(yè)論文_第1頁(yè)
基于物聯(lián)網(wǎng)的安保系統(tǒng)軟件設(shè)計(jì)-測(cè)控模塊-畢業(yè)論文_第2頁(yè)
基于物聯(lián)網(wǎng)的安保系統(tǒng)軟件設(shè)計(jì)-測(cè)控模塊-畢業(yè)論文_第3頁(yè)
基于物聯(lián)網(wǎng)的安保系統(tǒng)軟件設(shè)計(jì)-測(cè)控模塊-畢業(yè)論文_第4頁(yè)
基于物聯(lián)網(wǎng)的安保系統(tǒng)軟件設(shè)計(jì)-測(cè)控模塊-畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))基于物聯(lián)網(wǎng)的安保系統(tǒng)軟件設(shè)計(jì)—測(cè)控模塊摘要:在現(xiàn)在的信息時(shí)代,物聯(lián)網(wǎng)已成為信息網(wǎng)絡(luò)發(fā)展的一個(gè)必然趨勢(shì),而安防這個(gè)概念我們已不再陌生,它與我們的生活息息相關(guān),所以安防物聯(lián)就有待我們的研究與開(kāi)發(fā)。安防物聯(lián)網(wǎng)系統(tǒng)最突出的特點(diǎn)是其終端產(chǎn)品具有智能化、一體化,能夠連接多種傳感器,能夠通過(guò)互聯(lián)網(wǎng)傳輸報(bào)警圖像和信息,同時(shí)具有網(wǎng)絡(luò)平臺(tái)監(jiān)控報(bào)警服務(wù)功能。根據(jù)行業(yè)的特點(diǎn),物聯(lián)網(wǎng)安防產(chǎn)品要求具有體積小巧、造價(jià)低廉,集監(jiān)控、圖像分析、智能處理、前端存儲(chǔ)、警笛訊響、主動(dòng)報(bào)警等多種功能于一體,可連接多個(gè)傳感器,能脫離電腦主機(jī)單獨(dú)運(yùn)行。在整個(gè)軟件開(kāi)發(fā)過(guò)程中利用IAR進(jìn)行軟件的編輯和仿真。通過(guò)仿真器JLINK將程序下載到目標(biāo)板,先進(jìn)行單個(gè)分支模塊的設(shè)計(jì)與調(diào)試,最后進(jìn)行整個(gè)模塊的整合調(diào)試,實(shí)現(xiàn)人機(jī)交換。關(guān)鍵詞:ARM;UART0;RTC

Basedonnetworksecuritysystemthatsoftwaredesign-measurement—controlmoduleAbstract:Nowintheinformationage,thethingnetworkinginformationnetworkhasbecomeacertaintrendofdevelopmentof,andpreventthisconcepttowenolongerstrange,itwithourlife,sothattheyshouldbeunitedsecurityofourresearchanddevelopment.Securitycontentnetworkingsystemthemostoutstandingcharacteristicisitsendproductshaveintelligence,integration,abletoconnectavarietyofsensors,canthroughtheInternettotransmitalarmimageandinformation,andatthesametimeanetworkplatformmonitoringalarmservicefunctions.Accordingtothecharacteristicsoftheindustry,networksecurityproductsthatarerequiredtohavesmallsizeandlowcost,thecollectionmonitoring,imageanalysis,intelligentprocessing,storage,sirenfront-sound,andtheactivealarmandotherfunctionsinabody,canconnectmultiplesensor,fromthemaincomputerrunseparately.InthesoftwaredevelopmentprocessofsoftwareandtheeditorofIARsimulation.ThroughthesimulatorwillJLINKprogramdownloadtothetargetboard,firstforasinglebranchmoduledesignandcommissioning,finallythemoduleintegrationcommissioning,realizehuman-machineexchange.Keywords:ARM;UART0;RTC西安歐亞學(xué)院本科畢業(yè)論文(設(shè)計(jì))II目錄TOC\o"2-3"\h\z\u\t"標(biāo)題1,1"1緒論 11.1技術(shù)背景 11.2選題意義 11.3課題設(shè)計(jì)思路 11.4整體結(jié)構(gòu) 22LPC1768芯片介紹 32.1LPC1768簡(jiǎn)介 32.2技術(shù)特性 32.3LPC1768的結(jié)構(gòu)功能介紹 43應(yīng)用模塊 53.1存儲(chǔ)器 53.2系統(tǒng)控制模塊 63.3UART模塊 63.3.1主要寄存器描述 63.3.2編程結(jié)構(gòu) 73.4實(shí)時(shí)日歷時(shí)鐘RTC 83.4.1概述 93.4.2特殊寄存器 93.5LCD顯示模塊 103.5.1簡(jiǎn)介 103.5.2指令集使用示例 104開(kāi)發(fā)工具介紹 144.1IAREWARM開(kāi)發(fā)軟件 144.1.1簡(jiǎn)介 144.1.2項(xiàng)目創(chuàng)建 144.1.3IAR項(xiàng)目管理 144.1.4集成開(kāi)發(fā)環(huán)境的界面 154.1.5調(diào)試器 154.1.6C/C++編譯器 164.1.7匯編器 174.2J-LINK仿真器簡(jiǎn)介 174.2.1J-LinkARM主要特點(diǎn) 174.2.2J-Link支持ARM內(nèi)核 184.2.3J-Link在IAR開(kāi)發(fā)環(huán)境調(diào)試過(guò)程 185程序設(shè)計(jì) 205.1LPC1768芯片底層代碼 205.2主程序 225.3系統(tǒng)初化設(shè)計(jì) 265.4UARTO初始化 285.5GPIO模塊程序 285.6RTC模塊 295.7觸屏操作界面模塊 316系統(tǒng)調(diào)試 356.1整體概述 356.2調(diào)試環(huán)境 356.3調(diào)試及問(wèn)題處理 35結(jié)論 36致辭 37參考文獻(xiàn) 38PAGE351緒論1.1技術(shù)背景1999年美國(guó)麻省理工學(xué)院(MIT)提出物聯(lián)網(wǎng)概念,10余年間物聯(lián)網(wǎng)在世界范圍內(nèi)越來(lái)越受到關(guān)注。在國(guó)內(nèi),隨著政府對(duì)物聯(lián)網(wǎng)產(chǎn)業(yè)關(guān)注和支持力度的顯著提高,物聯(lián)網(wǎng)已呈現(xiàn)出一種從產(chǎn)業(yè)愿景走向現(xiàn)實(shí)應(yīng)用的趨勢(shì)。但是大家一直以來(lái)對(duì)物聯(lián)網(wǎng)的概念沒(méi)有一個(gè)準(zhǔn)確而固定的定義,以及一些利益相關(guān)方各自對(duì)這一概念進(jìn)行基于自身利益的解讀,使得大家對(duì)物聯(lián)網(wǎng)這一概念的內(nèi)涵和外延認(rèn)識(shí)明確。一般大家認(rèn)為,物聯(lián)網(wǎng)就是通過(guò)射頻信息傳感設(shè)備,按照約定的協(xié)議實(shí)現(xiàn)人與人、人與物、物與物之間進(jìn)行全面互聯(lián)的網(wǎng)絡(luò),主要特征是通過(guò)射頻識(shí)別、傳感器等方式采集物理世界的各種信息,結(jié)合互聯(lián)網(wǎng)絡(luò)、移動(dòng)通信網(wǎng)絡(luò)等進(jìn)行信息的傳送與交換,采用智能計(jì)算技術(shù)對(duì)所采集信息進(jìn)行分析處理,提高對(duì)物質(zhì)世界的感知能力,從而實(shí)現(xiàn)智能化的決策和控制。1.2選題意義安防物聯(lián)網(wǎng)就是物聯(lián)網(wǎng)和安防應(yīng)用相結(jié)合而產(chǎn)生的,它將給安防領(lǐng)域帶來(lái)新的應(yīng)用價(jià)值,他的終端產(chǎn)品具有智能化和集成等特征,能夠與多種傳感器相連接,并通過(guò)互聯(lián)網(wǎng)絡(luò)報(bào)警傳輸圖像和信息,同時(shí)也有一個(gè)網(wǎng)絡(luò)平臺(tái)的監(jiān)控和報(bào)警功能。根據(jù)行業(yè)的特點(diǎn),網(wǎng)絡(luò)安全產(chǎn)品還要求其小體積、集監(jiān)控、制造成本很低、圖像分析、前端存儲(chǔ)、智能處理、主動(dòng)報(bào)警和警笛訊響等多種功能于一體,可連接多個(gè)傳感器,可以脫離電腦主機(jī)單獨(dú)進(jìn)行運(yùn)行。從這個(gè)概念看,已人們被廣泛應(yīng)用的室內(nèi)入侵自動(dòng)報(bào)警系統(tǒng)是物聯(lián)網(wǎng)在安防領(lǐng)域的初步應(yīng)用,目前安防行業(yè)已經(jīng)在朝著物聯(lián)網(wǎng)方向發(fā)展,具有率先廣泛應(yīng)用的基礎(chǔ)和必然優(yōu)勢(shì)。由此可見(jiàn),加快安防物聯(lián)網(wǎng)應(yīng)用建設(shè),不但是提升安全防范水平有效的技術(shù)手段,而且也是提升社會(huì)信息化水平的重要杠桿,對(duì)推動(dòng)物聯(lián)網(wǎng)在其他行業(yè)應(yīng)用有巨大的示范作用,對(duì)經(jīng)濟(jì)發(fā)展和社會(huì)生活都將產(chǎn)生深遠(yuǎn)影響。國(guó)家工信部在《物聯(lián)網(wǎng)“十二五”發(fā)展規(guī)劃》中指出:物聯(lián)網(wǎng)已成為當(dāng)前世界新一輪經(jīng)濟(jì)和科技發(fā)展的戰(zhàn)略制高點(diǎn)之一,發(fā)展物聯(lián)網(wǎng)對(duì)于促進(jìn)經(jīng)濟(jì)發(fā)展和社會(huì)進(jìn)步具有重要的現(xiàn)實(shí)意義。1.3課題設(shè)計(jì)思路通過(guò)相關(guān)資料,了解基于ARM的RTC模塊開(kāi)發(fā)、人機(jī)交互接口、LCD真彩屏的原理。基于ARM實(shí)驗(yàn)板進(jìn)行設(shè)計(jì)開(kāi)發(fā),利用IAR開(kāi)發(fā)軟件對(duì)各個(gè)模塊進(jìn)行程序編寫和調(diào)試,確認(rèn)程序調(diào)試無(wú)誤后,先將PC機(jī)與ARM實(shí)驗(yàn)板進(jìn)行串口聯(lián)接,進(jìn)行收/發(fā)通信調(diào)試,最后再將各個(gè)部分整理綜合起來(lái)調(diào)試整個(gè)安防系統(tǒng)。1.4整體結(jié)構(gòu)通過(guò)外部無(wú)線模塊的物理探測(cè),將采集的數(shù)據(jù)信息傳遞到目標(biāo)開(kāi)發(fā)板LPC1768中,在目標(biāo)板上進(jìn)行數(shù)據(jù)處理并顯示結(jié)果。外部信息采集J-Link目標(biāo)板ARM外部信息采集J-Link目標(biāo)板ARM(LPC1768)PC機(jī)LCDLCD顯示圖1-1整體結(jié)構(gòu)圖

2LPC1768芯片介紹2.1LPC1768簡(jiǎn)介L(zhǎng)PC1768是NXP公司推出的基于ARMCortex-M3內(nèi)核的微控制器LPC17XX系列中的一員。LPC17XX系列Cortex-M3微處理器用于處理要求高度集成和低功耗的嵌入式應(yīng)用。LPC1700系列微控制器的操作頻率可達(dá)100MHz(新推出的LPC1769和LPC1759可達(dá)120MHz)。ARMCortex-M3CPU具有3級(jí)流水線和哈佛結(jié)構(gòu)[1]。LPC17XX系列微控制器的外設(shè)組件包含高達(dá)512KB的flash存儲(chǔ)器、64KB的數(shù)據(jù)存儲(chǔ)器、以太網(wǎng)MAC、USB主機(jī)/從機(jī)/OTG接口、8通道DMA控制器、4個(gè)UART、2條CAN通道、2個(gè)SSP控制器、SPI接口、3個(gè)IIC接口、2輸入和2輸出的IIS接口、8通道的12位ADC、10位DAC、電機(jī)控制PWM、正交編碼器接口、4個(gè)通用定時(shí)器、6輸出的通用PWM、帶有獨(dú)立電池供電的超低功耗RTC和多大70個(gè)的通用IO管腳[1]。2.2技術(shù)特性64KB片內(nèi)SRAM。32KB可供高性能CPU通過(guò)本地代碼/數(shù)據(jù)總線訪問(wèn)。2個(gè)靜態(tài)存儲(chǔ)器模塊、帶獨(dú)立訪問(wèn)路徑、可以進(jìn)行吞吐量更高的操作,靜態(tài)存儲(chǔ)器可用做Ethernet、通用串行總線、DMA存儲(chǔ)器,以及通用指令與Datastorage。以太網(wǎng)串行EEPROM中的物理地址帶簡(jiǎn)化媒體獨(dú)立接口和相關(guān)的直接存儲(chǔ)器。USB2.0全速?gòu)臋C(jī)/主機(jī)/OTG控制器,帶有用于從機(jī)、主機(jī)功能的片內(nèi)PHY和相關(guān)的控制器。4個(gè)異步串行通信、全部的UART都支持IrDA[2]。CAN控制器,帶有2個(gè)通道。2個(gè)SSP控制器,帶有FIFO,可按多種協(xié)議進(jìn)行通信。其中一個(gè)可選擇用于SPI,并且和SPI公用中斷。SSP接口可以與GPDMA控制器一起使用[3]。IIS接口可與GPDMA一起使用。IIS接口支持3線數(shù)據(jù)發(fā)送和接收或4線組合發(fā)送和接收連接,以及主機(jī)時(shí)鐘輸入輸出[3]。4個(gè)通用定時(shí)/計(jì)數(shù)器,共有8個(gè)捕獲輸入和10個(gè)比較輸出。每個(gè)定時(shí)器都有一個(gè)外部計(jì)數(shù)輸入。一個(gè)電機(jī)控制PWM,支持三相的電機(jī)控制。通過(guò)片內(nèi)PLL,沒(méi)有高頻晶振,CPU頁(yè)可以以最高頻率運(yùn)轉(zhuǎn)。第二個(gè)專用的PLL可用于USB接口,以允許增加主PLL的靈活性。100MHz的工作頻率。嵌套向量中斷控制器,可快速確定中斷。四種節(jié)能模式:睡眠模式、深度睡眠模式、關(guān)機(jī)模式,和深度省電模式。喚醒中斷控制器支持超低漏電保持模式,并針對(duì)關(guān)鍵事件提供瞬時(shí)完全活動(dòng)模式。2.3LPC1768的結(jié)構(gòu)功能介紹LPC1768芯片包含一個(gè)支持仿真的Cortex-M3CPU,片內(nèi)存儲(chǔ)器控制器接口的Cortex-M3局部總線,中斷控制器接口的AMBA高性能總線(AHB)和連接片內(nèi)外設(shè)功能的外設(shè)總線(VPB,ARMAMBA總線的兼容超集)LPC1768將Cortex-M3處理器配置為小端(little-endian)字節(jié)順序[4]。AHB外設(shè)分配了2M字節(jié)的地址范圍,它位于4G字節(jié)ARM存儲(chǔ)器空間的最頂端。每個(gè)AHB外設(shè)都分配了16kb字節(jié)的地址空間。LPC1768的外設(shè)功能(中斷控制器除外)都連接到VPB總線。AHB到VPB的橋?qū)PB總線與AHB總線相連。VPB外設(shè)也分配了2M字節(jié)的地址范圍,從3.5GB地址點(diǎn)開(kāi)始。每個(gè)VPB外設(shè)在VPB地址空間內(nèi)都分配了16k字節(jié)地址空間。Cortex-M3處理器專為控制極低動(dòng)態(tài)功耗和漏電而設(shè)計(jì)。類似于所有Cortex-M部分處理器,Cortex-M3處理器也利用ARM180ULL電源管理工具包(PMK)和標(biāo)準(zhǔn)單元庫(kù)來(lái)支持超低功耗休眠實(shí)現(xiàn)。這款處理器與集成喚醒中斷控制器(WIC)相結(jié)合,支持迅速將內(nèi)核置為超低漏電狀態(tài)保持模式,并可在發(fā)生關(guān)鍵事件時(shí)以近乎瞬時(shí)的響應(yīng)速度返回完全活躍模式[5]。這些技術(shù)的整合便產(chǎn)生了超低功耗的32位處理器,其性能效率和響應(yīng)能力可最大限度地減少活動(dòng)持續(xù)時(shí)間,在利用ARM物理IP實(shí)現(xiàn)時(shí),可在活躍和休眠狀態(tài)下實(shí)現(xiàn)更低功耗。

3應(yīng)用模塊3.1存儲(chǔ)器存儲(chǔ)器是構(gòu)成嵌入式系統(tǒng)硬件(處理器、存儲(chǔ)器、I/O電路)的重要做成部分。設(shè)計(jì)嵌入式系統(tǒng)的存儲(chǔ)器時(shí)需要考慮許多因素:有的嵌入式控制器集成了存儲(chǔ)器,一般不需要額外擴(kuò)展,甚至有的嵌入式控制器無(wú)法擴(kuò)展;有的嵌入式微處理器片上沒(méi)有存儲(chǔ)器,必須外部擴(kuò)展;有的嵌入式處理器片上集成了一定數(shù)量的存儲(chǔ)器,可以滿足一定的需要,如果軟件占用空間比較大,可能需要擴(kuò)展存儲(chǔ)器,所以整個(gè)存儲(chǔ)器系統(tǒng)由片上片外兩部分組[6]。RAM空間ROM空間EEPROM圖3-1嵌入式系統(tǒng)典型的存儲(chǔ)空間分配示意圖隨機(jī)存儲(chǔ)器RAM這種存儲(chǔ)器之所以稱之為隨機(jī)存儲(chǔ)器(RAM),是因?yàn)槿我淮鎯?chǔ)單元的數(shù)據(jù)可以以任一順序而非固定順序被訪問(wèn)(讀/寫)。在RAM中有兩種重要的存儲(chǔ)元件:SRAM(靜態(tài)RAM)和DRAM(動(dòng)態(tài)RAM)。它們之間的主要差別是存儲(chǔ)于其中的數(shù)據(jù)的壽命長(zhǎng)短。SRAM只要是芯片有就會(huì)保留其中的內(nèi)容,但如果切斷了電源或者是暫時(shí)斷電了,其中的內(nèi)容就會(huì)永久的丟失;DRAM只有極短的數(shù)據(jù)壽命,通常不超過(guò)0.25s,即使是在連續(xù)供電的情況下也是如此。因此使用DRAM時(shí),需要配合SRAM控制器,對(duì)DRAM進(jìn)行周期性刷新或再生[6]。只讀存儲(chǔ)器ROMROM家族中的存儲(chǔ)器是按照向其寫入或更新數(shù)據(jù)的方法(通常叫作編程)及其可以從寫的次數(shù)來(lái)區(qū)分的,其中包括不可擦除型。通常,系統(tǒng)開(kāi)發(fā)過(guò)程中常用的是可擦除型只讀存儲(chǔ)器??梢淮尉幊痰闹蛔x存儲(chǔ)器通常與處理器集成在一起??扉W存儲(chǔ)器FLASH是存儲(chǔ)器技術(shù)最新的發(fā)展結(jié)果,具有高密度、低價(jià)格、非意失性、快速讀取以及電氣可重編程等特點(diǎn),在嵌入式系統(tǒng)中的使用迅速增長(zhǎng)。嵌入式系統(tǒng)中使用FLASH有兩種形式,一種是嵌入式處理器上集成了FLASH,另一種是片外擴(kuò)展FLASH。3.2系統(tǒng)控制模塊一個(gè)ARM芯片中通常有很多功能部件,其中有一些是獨(dú)自工作的,不會(huì)對(duì)其他部件產(chǎn)生影響,比如UART接口、I2C接口等。而有一些部件的影響是全局性的,它們的狀態(tài)改變時(shí)可能引起整個(gè)系統(tǒng)運(yùn)行狀態(tài)的改變,這些部件如表3-1所列。表3-1系統(tǒng)控制模塊名稱及簡(jiǎn)介部件名稱功能簡(jiǎn)介晶體振蕩器通過(guò)外外結(jié)晶振或時(shí)鐘源為系統(tǒng)提供時(shí)鐘信號(hào)復(fù)位復(fù)位使ARM內(nèi)核與外設(shè)部件進(jìn)入一個(gè)確定的初始狀態(tài)存儲(chǔ)器隱射控制控制異常向量表的重新映射方式鎖相環(huán)(PLL)將晶體振蕩器輸入的時(shí)鐘倍頻到一個(gè)合適的時(shí)鐘頻率VPB分頻器將內(nèi)核時(shí)鐘與外設(shè)時(shí)鐘分開(kāi)的部件功率控制使處理器空閑或者掉電,還能關(guān)閉指定的功能部件,以降低芯片功耗喚醒定時(shí)器系統(tǒng)上電或掉電喚醒后,保證晶體振蕩器能輸出穩(wěn)定的時(shí)鐘信信號(hào)時(shí)鐘系統(tǒng)是計(jì)算機(jī)系統(tǒng)的脈搏,處理器核在一拍接一拍的時(shí)鐘驅(qū)動(dòng)下完成指令執(zhí)行、狀態(tài)變換等動(dòng)作。外設(shè)部件在時(shí)鐘的驅(qū)動(dòng)下進(jìn)行著各種工作,比如串口數(shù)據(jù)的收發(fā)、A/D轉(zhuǎn)換、定時(shí)器計(jì)數(shù)等[7]。因此時(shí)鐘對(duì)于一個(gè)計(jì)算機(jī)系統(tǒng)是至關(guān)重要的,通常時(shí)鐘系統(tǒng)出現(xiàn)問(wèn)題也是最致命的,比如振蕩器不起振、振蕩不穩(wěn)、停振等[7]。時(shí)鐘系統(tǒng)包括4個(gè)部分,分別為晶體振蕩器、喚醒定時(shí)器、鎖相環(huán)(PLL)和VPB分頻器。其中“晶體振蕩器”為系統(tǒng)提供基本的時(shí)鐘信號(hào)。當(dāng)復(fù)位或處理器從掉電模式被喚醒時(shí),“喚醒定時(shí)器”要對(duì)輸入的時(shí)鐘信號(hào)做計(jì)數(shù)延時(shí),使芯片內(nèi)部件有時(shí)間進(jìn)行初始化。接下來(lái)Fosc信號(hào)被PLL提高到一個(gè)符合用戶需要的頻率(Fcclk),F(xiàn)cclk用于CPU內(nèi)核。因?yàn)镃PU內(nèi)核通常比外設(shè)部件的工作速度要快,所以用戶可以設(shè)置VPB分頻器,把Fcclk信號(hào)降低到一個(gè)合適的值Fpclk,該信號(hào)用于外設(shè)部件。3.3UART模塊3.3.1主要寄存器描述UART是異步通信收發(fā)器的簡(jiǎn)稱,遵守工業(yè)異步通信標(biāo)準(zhǔn)。目前大多數(shù)嵌入式處理器都配了UART接口,有的處理器上稱為SCI。異步通信允許處理器之間的通信不使用公共的參考時(shí)鐘。通信的雙方使用相同的波特率,數(shù)據(jù)發(fā)送和接收的單位是幀。幀由一系列在通信線上傳輸?shù)奈唤M成[8]。UART的特性:16字節(jié)接收FIFO和16字節(jié)發(fā)送FIFO。寄存器位置符合16C550工業(yè)標(biāo)準(zhǔn)。接收器FIFO觸發(fā)點(diǎn)可為1、4、8和14字節(jié)。內(nèi)置波特率發(fā)生器。UART1含有標(biāo)準(zhǔn)調(diào)制解調(diào)器接口信號(hào)。3.3.2編程結(jié)構(gòu)UART的編程結(jié)構(gòu)通常包括發(fā)送寄存器、接收寄存器、模式寄存器、狀態(tài)寄存器、控制寄存器和波特率發(fā)生器等;如果串行接口模塊支持同步通信方式,則還會(huì)包含同步字符寄存器等。對(duì)于高性能的UART模塊,發(fā)送寄存器和接收寄存器可能被多個(gè)字節(jié)的發(fā)送緩沖區(qū)和接收緩沖區(qū)所取代,以最大限度地減少處理器內(nèi)核的負(fù)擔(dān)[8]。U0RBR是UART0RxFIFO的最高字節(jié),是UART0接收FIFO的出口,如圖3-3所示。它包含了最早接收到的字符,可通過(guò)總線接口讀出。LSB(bit0)代表最早接收到的數(shù)據(jù)位。如果接收到的字符小于8位,未使用的MSB填充為0。如果要訪問(wèn)U0RBR,U0LCR的除數(shù)鎖存訪問(wèn)位(DLAB)必須為0。U0RBR為只讀寄存器。由于PE、FE和BI位與RBRFIFO頂端的字節(jié)相對(duì)應(yīng)(即下次讀RBR時(shí)讀出的字節(jié)),因此,將接收的字節(jié)及其狀態(tài)位成對(duì)讀出的正確方法是先讀U0LSR寄存器的內(nèi)容,再讀U0RBR的字節(jié)[9]。圖3-2接收FIFO16字節(jié)U0THR是異步串行通信0口Tx先進(jìn)先出的高字節(jié),UART0發(fā)送FIFO的入口。我們可以用總線接口寫入TxFIFO中最近的字符[9]。假如訪問(wèn)U0THR,U0LCR的除數(shù)鎖存訪問(wèn)位(DLAB)要置為0。U0THR為只能寫入的寄存器。圖3-3發(fā)送FIFO16字節(jié)其中PCLK為外圍時(shí)鐘,U0DLM和U0DLL為標(biāo)準(zhǔn)的異步串行通信T0波特率除數(shù)寄存器,DIVADDVAL和MULVAL為異步串行通信T0規(guī)定的值[10]。MULVAL和DIVADDVAL的參數(shù)值應(yīng)具備[11]:0<MULVAL≤150≤DIVADDVAL≤15如果U0FDR寄存器的數(shù)值不滿足以上條件,則會(huì)引起小數(shù)分頻后輸出未定義。如果DIVADDVAL為0,就不會(huì)被分頻。UART0可以使能4個(gè)UART0中斷源,操作示例:U0IER=0X01;//使能RBR中斷,即接收中斷。U0IIR提供狀態(tài)代碼用于指示一個(gè)掛起中斷的中斷源和優(yōu)先級(jí)。在訪問(wèn)U0IIR過(guò)程中中斷被凍結(jié)。如果在訪問(wèn)U0IIR時(shí)產(chǎn)生了中斷,該中斷被記錄,下次U0IIR訪問(wèn)可讀出[11]。3.4實(shí)時(shí)日歷時(shí)鐘RTC日歷時(shí)鐘主要包括日歷數(shù)據(jù)(年、月、日)和時(shí)鐘數(shù)據(jù)(時(shí)、分、秒)。目前大多數(shù)嵌入式系統(tǒng)的日歷時(shí)鐘采用專用的日歷時(shí)鐘芯片實(shí)現(xiàn),有的時(shí)鐘芯片需要外接電池,也有的時(shí)鐘芯片與電池組裝在一起,形成模塊電路,即使系統(tǒng)掉電,憑借電池也可以維持日歷時(shí)鐘芯片準(zhǔn)確的運(yùn)行。3.4.1概述內(nèi)部的RTC實(shí)時(shí)日歷時(shí)鐘模塊需要以外部晶振來(lái)提供時(shí)鐘源,并且可以在系統(tǒng)關(guān)閉的情況下運(yùn)行計(jì)時(shí),具有閏年產(chǎn)生器、報(bào)警功能和時(shí)鐘節(jié)拍中斷等功能。內(nèi)部實(shí)時(shí)日歷時(shí)鐘RTC模塊,在系統(tǒng)電源掉電的情況下,支持備用電池供電,從而保持了日歷時(shí)間的持續(xù)。用ARM的STRB/LDRB指令,RTC能發(fā)送8位BCD碼數(shù)據(jù)給處理器,包含了秒、分、時(shí)、星期、日、月和年。RTC單元也具備報(bào)警功能。RTC總體特性:BCD數(shù)據(jù)包含秒、分、時(shí)、星期、日、月和年。具有閏年產(chǎn)生器。具有報(bào)警中斷或者從掉電模式中喚醒等功能。獨(dú)立的電源供電引腳VDDRTC。支持毫秒級(jí)的時(shí)鐘節(jié)拍中斷,可用于RTCS的內(nèi)核時(shí)鐘節(jié)拍。具備循環(huán)時(shí)間復(fù)位功能。3.4.2特殊寄存器控制寄存器(RTCCON)控制寄存器RTCCON由4位組成,RTCEN位于控制BCD寄存器的讀/寫功能,CLKSEL、CNTSETL和CLKRST位用于測(cè)試。由于RTCEN位控制著處理器和RTC的所有接口,所以在系統(tǒng)復(fù)位之后,RTC控制程序要使能數(shù)據(jù)的讀/寫功能。在掉電之前,RTCEN位又必須清零,以防止對(duì)RTC寄存器的不安全操作。在小端存儲(chǔ)模式下,RTCCON寄存器位于0x01D70040地址處;在大端存儲(chǔ)模式下,RTCCON寄存器位于0x01D70043地址處,各位定義如下表[12]。表3-2RTCCON寄存器RTCCON位描述初始值CLKRST[3]RTC時(shí)鐘計(jì)數(shù)重置0=不重置1=重置0CNTSEL[2]BCD計(jì)數(shù)選擇0=組合BCD計(jì)數(shù)器1=保留0CLKSEL[1]BCD時(shí)鐘選擇0=XTAL1/215分頻1=保留0RTCEN[0]RTC讀/寫使能0=禁止1=使能0報(bào)警控制寄存器(RTCALM)報(bào)警控制寄存器RTCALM用于設(shè)置報(bào)警使能和報(bào)警時(shí)間,在掉電模式下,RTCALM寄存器可產(chǎn)生ALMINT和PMWKUP信號(hào),但是在正常模式下,只產(chǎn)生ALMINT信號(hào)。在小端模式下,RTCALM寄存器位于0x01D70050地址處;在大端模式下,位于0x01D70053地址處[13]。報(bào)警時(shí)間數(shù)據(jù)寄存器報(bào)警時(shí)間數(shù)據(jù)寄存器共6個(gè),為ALMSEC到ALMYEAT。均為8位,最高位保留,其他位保存設(shè)置的報(bào)警時(shí)間。循環(huán)復(fù)位寄存器(RTCRST)循環(huán)復(fù)位寄存器RTCRST用于設(shè)置循環(huán)復(fù)位使能和循環(huán)邊界值。在小端存儲(chǔ)模式下,RTCRST寄存器位于0x01D7006C地址處;在大端存儲(chǔ)模式下,位于0x01D7006F地址處。BCD時(shí)間數(shù)據(jù)寄存器BCD時(shí)間數(shù)據(jù)寄存器一共7個(gè),為BCDSEC到BCDYEAR,分別保存時(shí)間秒、分、時(shí)、日、星期、月和年。時(shí)鐘節(jié)拍計(jì)數(shù)寄存器(TICNT)時(shí)鐘節(jié)拍計(jì)數(shù)寄存器TICNT用于設(shè)置節(jié)拍時(shí)鐘使能和時(shí)鐘計(jì)數(shù)值。在小端存儲(chǔ)模式下,TICNT寄存器位于0x01D7008C地址處;在大端存儲(chǔ)模式下,位于0x01D7008F地址處[13]。3.5LCD顯示模塊3.5.1簡(jiǎn)介采用32位ARM處理器和FPGA雙核控制架構(gòu)開(kāi)發(fā)的一款高性能、低功耗、易使用的64K的TFT真彩顯示器,可以直接和具有UART串行接口的MCU(如51單片機(jī)、AVR、PIC、DSP、ARM、工控機(jī)等)連接。只需通過(guò)串口向終端發(fā)命令,便可完成相應(yīng)的操作。主要特點(diǎn)如下:處理器:采用32位ARM處理器+FPGA雙核控制架構(gòu),加強(qiáng)圖像處理功能。存儲(chǔ)容量:1GBitFlash存儲(chǔ)容量,儲(chǔ)存一百多張16bit真彩色圖片。接口特性圖片下載接口:全速USB,速度600KB/S。通訊接口:3.3VRS232或TTL/CMOS電平。PC軟件功能IDE編譯下載環(huán)境,可視化窗口、界面美觀大方;IDE集成了大量工控行業(yè)圖標(biāo)、按鈕、3D視圖等矢量圖,降低了美工難度;支持新建多個(gè)頁(yè)面,編譯后軟件自動(dòng)生成每個(gè)頁(yè)面的驅(qū)動(dòng)函數(shù);支持PC軟件與HMI同步顯示,具有單步調(diào)試等功能;支持二進(jìn)制文件燒錄,量產(chǎn)更快更安全。工程編譯后IDE將自動(dòng)生成工程二進(jìn)制文件。電源:9-12V@1A工作溫度:20℃~70℃3.5.2指令集使用示例握手(0x00)發(fā)送:fd000000ddccbbaa返回:05ffff清屏(0x02)發(fā)送:fd020000ddccbbaa設(shè)置調(diào)色板(0x05)發(fā)送:fd050004fffff800ddccbbaa0xff0xff:前景色的顏色編碼,0xffff代表白色。0x550x00:背景色的顏色編碼,0xf800代表紅色。智能終端收到該命令后將白色和紅色分別設(shè)為默認(rèn)的前景色和背景色。在沒(méi)有執(zhí)行該命令前,系統(tǒng)默認(rèn)的前景色為黃色,背景色為藍(lán)色。背景色取色(0x06)發(fā)送:fd06000400030005ddccbbaa返回:無(wú)解析:0xfd:命令頭,每個(gè)指令發(fā)送前必須發(fā)送。0x06:背景色取色指令的指令碼。0x000x04:用兩個(gè)字節(jié)表示數(shù)據(jù)長(zhǎng)度。在本指令中需要發(fā)送的數(shù)據(jù)為0x000x030x000x05,共4個(gè)。0x000x03:表示x軸的坐標(biāo)。0x000x05:表示x軸的坐標(biāo)。用十進(jìn)制表示其XY坐標(biāo)為(3,5)。智能終端收到該命令后將坐標(biāo)值為(3,5)的點(diǎn)的顏色設(shè)為默認(rèn)的背景色。前景色取色(0x07)發(fā)送:fd07000400030005ddccbbaa返回:無(wú)解析:0x07:前景色取色指令的指令碼。智能終端收到該命令后將坐標(biāo)值為(3,5)的點(diǎn)的顏色設(shè)為默認(rèn)的前景色。設(shè)置字符顯示模式(0x08)。發(fā)送:fd080003010000ddccbbaa背光燈關(guān)閉背光燈指令(0x09),發(fā)送:fd090000ddccbbaa返回:無(wú)系統(tǒng)默認(rèn)開(kāi)機(jī)自動(dòng)打開(kāi)背光燈。打開(kāi)背光燈指令(0x0a),發(fā)送:fd0a0000ddccbbaa返回:無(wú)調(diào)節(jié)背光亮度(0x0b),發(fā)送:fd0b000166ddccbbaa返回:無(wú)解析:0x7f:為為背光亮度PWM控制設(shè)定值PWM_Light,PWM_Light設(shè)為0x7f即將背光亮度設(shè)為半暗。PWM_Light的取值范圍0x00-0xff,值越大背光亮度越大,例如0x00將關(guān)閉背光,0x7f將背光調(diào)至半暗,0xff將背光調(diào)至最亮。工作模式設(shè)定(0x0c)發(fā)送:fd0c00020005ddccbbaa返回:無(wú)解析:0x000x02:用兩個(gè)字節(jié)表示數(shù)據(jù)長(zhǎng)度,本指令只有兩個(gè)字節(jié)的參數(shù):ModePic_num。0x000x05:設(shè)定為工作模式0。在工作模式0下,支持32*32點(diǎn)陣漢字(指令0x13)、支持5幅終端圖片的保存與調(diào)用(指令0x30)。發(fā)送:fd0c0002ff12ddccbbaa返回:無(wú)0xff0x12:設(shè)定為工作模式1。在工作模式1下,支持12幅終端圖片的保存與調(diào)用(指令0x30)。這是出廠默認(rèn)設(shè)置,與之前版本完全兼容。當(dāng)指令執(zhí)行完畢后,彩屏終端會(huì)返回Mode的值。字符顯示6X10點(diǎn)陣ASCII字符串顯示(0x10),首先定義數(shù)組:charAscii[]="GoldenPalmElectronicsGroup";發(fā)送:fd10002200000000Ascii1[0]…Ascii1[29]ddccbbaa返回:無(wú)0x000x00:表示x軸的坐標(biāo)。0x000x00:表示y軸的坐標(biāo)。即以(0,0)為顯示起始位置開(kāi)始顯示字符串。8X16點(diǎn)陣ASCII字符串顯示(0x11),發(fā)送:fd11002200000000Ascii1[0]…Ascii1[29]ddccbbaa返回:無(wú)16X16點(diǎn)陣GB2312字符串顯示(0X12),發(fā)送:fd13001500000000GB2312[0]…GB2312[16]ddccbbaa返回:無(wú)解析:使用本示例方式顯示的字符必須為全角字符。32X32點(diǎn)陣GB2312字符串顯示(0X13)首先定義數(shù)組:charGB2312[]="通信工程畢業(yè)設(shè)計(jì)"。發(fā)送:fd12001500000000GB2312[0]…GB2312[16]ddccbbaa返回:無(wú)注意:要能正常使用本功能必須保證:工作在模式0下,32x32字庫(kù)已正確燒寫到終端。畫(huà)點(diǎn)(0x21)首先定義數(shù)組:uint8dot[]={0,5,0,140,0,10,0,140,0,15,0,140,0,20,0,140,0,25,0,140,0,30,0,140,0,35,0,140,0,40,0,140,0,45,0,140,0,50,0,140,0,55,0,140,0,60,0,140,0,65,0,140,0,70,0,140};發(fā)送:0xfd0x210x000x38dot[0]…dot[55]0xdd0xcc0xbb0xaa返回:無(wú)畫(huà)圓框或圓域指令(0x26)首先定義數(shù)組:uint8circle[]={1,0,160,0,135,5,0,0,180,0,125,5};發(fā)送:0xfd0x230x000x10circle[0]…circle[15]0xdd0xcc0xbb0xaa返回:無(wú)畫(huà)矩形框或矩形域指令(0x27)首先定義數(shù)組:uint8rectangle[]={0,0,30,0,30,0,90,0,200};發(fā)送:0xfd0x270x000x09rectangle[0]…rectangle[8]0xdd0xcc0xbb0xaa返回:無(wú)LCD初始化步驟1:使用設(shè)置波特率(0x01)命令(fd01000555aa5aa5ffddccbbaa)將通訊波特率改為本終端所支持的最大通訊波特率115200。相應(yīng)的在串口選擇115200,且選中HEX。發(fā)送:fd01000555aa5aa5ffddccbbaa返回:ff步驟2:去掉電源后,再次插好,波特率更換成功。步驟3:發(fā)送實(shí)時(shí)滿屏顯示(0x35)指令(fd350000ddccbbaa)后,返回fc提示可以發(fā)送圖數(shù)據(jù)。發(fā)送:fd350000ddccbbaa返回:FC

4開(kāi)發(fā)工具介紹4.1IAREWARM開(kāi)發(fā)軟件4.1.1簡(jiǎn)介IAREmbeddedWorkbench是一種有效的基于ARM的嵌入式系統(tǒng)軟件開(kāi)發(fā)工具,它不但使用戶能夠充分有效地進(jìn)行開(kāi)發(fā)管理嵌入式應(yīng)用項(xiàng)目,而且其界面類似于MSVisualC++,并且可以在Windows95/98/2000/XP/7等多種平臺(tái)上運(yùn)行。IAR中不僅包含了源程序文件編輯器和源程序調(diào)試器(Debug)而且還包括項(xiàng)目管理器(Project)等,并且為C/C++編譯器、匯編器、鏈接定位器等提供了單一而又靈活的軟件開(kāi)發(fā)環(huán)境。其中的文件查找功能可在指定的若干種文件中進(jìn)行全局文件搜索;IAREW還提供了對(duì)第三方工具軟件的接口,允許啟動(dòng)用戶指定的應(yīng)用程序[14]。4.1.2項(xiàng)目創(chuàng)建在IAREW集成開(kāi)發(fā)環(huán)境中用戶需要建立一個(gè)工作區(qū)(Workspace),用于創(chuàng)建一個(gè)或多個(gè)項(xiàng)目,每個(gè)項(xiàng)目都可以建立以組(Group)為級(jí)別的結(jié)構(gòu),用戶的源程序文件可以直接添加到項(xiàng)目中,也可以分別添加到各個(gè)組中。在創(chuàng)建項(xiàng)目前,應(yīng)先創(chuàng)建一個(gè)新的工作區(qū)。進(jìn)入IAREW集成開(kāi)發(fā)環(huán)境后,選擇File→New→Workspace菜單項(xiàng),即可創(chuàng)建一個(gè)工作區(qū)。4.1.3IAR項(xiàng)目管理各個(gè)項(xiàng)目中可以包含不同的組(Group)和文件(File)模塊,并且可以為每個(gè)項(xiàng)目進(jìn)行選項(xiàng)設(shè)置[14]。在項(xiàng)目開(kāi)發(fā)過(guò)程中任何修改都會(huì)被記錄,從而保證修改設(shè)計(jì)時(shí)可以獲得所有需要的模塊。通過(guò)目標(biāo)創(chuàng)建(Make)選項(xiàng)可以很方便地實(shí)現(xiàn)對(duì)一個(gè)IAREW項(xiàng)目進(jìn)行完整的編譯和鏈接,直接產(chǎn)生最終的應(yīng)用目標(biāo)文件,而且可執(zhí)行文件中不包含已過(guò)期的模塊。4.1.4集成開(kāi)發(fā)環(huán)境的界面分層次的工程組織。同一工作空間中允許存放多個(gè)工程??赏?康拇翱诤投嘁晥D。源代碼瀏覽。創(chuàng)建和維護(hù)庫(kù)的工具??梢院驮创a控制系統(tǒng)相集成。文本編輯器。IAREmbededWorkbench的工作界面。1為工作窗口,2是程序源代碼窗口,3是反匯編窗口,4是寄存器窗口,5是存儲(chǔ)器窗口,其實(shí)還可以打開(kāi)更多的窗口,例如變量窗口等。由此可見(jiàn)IAR為編程人員在調(diào)試過(guò)程中提供了很大的方便。圖4-1調(diào)試窗口4.1.5調(diào)試器IARC-SPY調(diào)試器是IAR可設(shè)置復(fù)雜的條件斷點(diǎn),具有在任意時(shí)刻中斷的能力,調(diào)試時(shí)可選擇實(shí)時(shí)模式,可進(jìn)行內(nèi)存驗(yàn)證[14]。圖4-2C-SPY調(diào)試窗口IARC-SPY調(diào)試器使用戶能進(jìn)行C,C++和匯編語(yǔ)言源代碼調(diào)試、反匯編調(diào)試或二者混合調(diào)試。采用源代碼調(diào)試是驗(yàn)證用戶應(yīng)用程序邏輯性正確與否的最快捷、最便利的方式;而反匯編調(diào)試則針對(duì)應(yīng)用程序的錯(cuò)誤段,并對(duì)硬件進(jìn)行精確控制。在混合顯示模式中,調(diào)試器顯示相應(yīng)的C/C++源代碼及其它對(duì)應(yīng)的反匯編代碼清單。4.1.6C/C++編譯器IARC/C++編譯器是一個(gè)具有世界先進(jìn)水平并具備標(biāo)準(zhǔn)C/C++特性的編譯器,與其他IAR系統(tǒng)軟件一起集成在IAREW環(huán)境之中。IARC/C++編譯器的主要特性包括:支持符合ANSIC標(biāo)準(zhǔn)的C/C++編程語(yǔ)言;提供了運(yùn)行庫(kù)IARDLLB,其中包含豐富的庫(kù)函數(shù);同時(shí)還支持IEEE754格式的浮點(diǎn)數(shù)、多字節(jié)參數(shù)和局部參數(shù)。IARC/C++編譯順提供靈活的變量分配能力,可真接采用C/C++語(yǔ)言編寫中斷函數(shù),具有針對(duì)不同CPU保持可移性的“#pragma”編譯命令,支持IAR擴(kuò)展嵌入式C++特性,例如模板、名稱空間、多重虛擬外設(shè)、固定操作符(static_cast、const_cast和reinterpret_cast)以及標(biāo)準(zhǔn)模板庫(kù)(STL)等。支持特殊目標(biāo)語(yǔ)言的擴(kuò)展,例如特殊函數(shù)的輸入、擴(kuò)展關(guān)鍵字、指示、預(yù)設(shè)標(biāo)志、同部函數(shù)等。IARC/C++編譯器運(yùn)行速度快,采用面向存儲(chǔ)器的設(shè)計(jì)避免了暫存文件及覆蓋技術(shù)。編譯時(shí)進(jìn)行嚴(yán)格的擴(kuò)展類型檢查,鏈接時(shí)進(jìn)行嚴(yán)格的模塊接口類型檢查。IARC/C++編譯器采用最優(yōu)化技術(shù)產(chǎn)生高效的目標(biāo)代碼,可選擇以代碼大小或速度快慢進(jìn)行目標(biāo)代碼優(yōu)化。多種輸出格式選擇,有重定位二進(jìn)制、匯編源代碼和可選的匯編器列表文件等。提供容易理解的錯(cuò)誤和警告信息。生成與C-SPY高級(jí)調(diào)試兼容的擴(kuò)展調(diào)試信息。4.1.7匯編器IAR可以從新置位宏匯編器,兼容很多格式的宏,而且具有很多指示符號(hào)和表達(dá)式。在IAR中既可以進(jìn)行C語(yǔ)言的編輯也可以用匯編語(yǔ)言編寫程序,并且與其余IAR系統(tǒng)軟件相集成。支持外部調(diào)用的復(fù)雜表達(dá)式、每個(gè)模塊有多達(dá)65536個(gè)可重定位段、符號(hào)可長(zhǎng)達(dá)255個(gè)有效字符。4.2J-LINK仿真器簡(jiǎn)介圖4-3J-LINK仿真器4.2.1J-LinkARM主要特點(diǎn)IAREWARM集成開(kāi)發(fā)環(huán)境無(wú)縫連接的J-Link仿真器。支持所有ARM7/ARM9內(nèi)核的芯片,以及cortexM3,包括Thumb模式。支持ADS,IAR,KEIL,WINARM,REALVIEW等幾乎所有的開(kāi)發(fā)環(huán)境。下載速度高達(dá)ARM7:600kB/s,ARM9:550kB/s,通過(guò)DCC最高可達(dá)800kB/s。最高JTAG速度12MHz。開(kāi)發(fā)板安全電壓區(qū)間1.2V–3.3V,兼容5V。自動(dòng)快速識(shí)別功能。監(jiān)測(cè)所有J-Link信號(hào)和開(kāi)發(fā)板電壓。可以實(shí)現(xiàn)即插即用。使用USB電源。帶USB連接線和20芯扁平電纜。支持多J-Link器件串行連接。標(biāo)準(zhǔn)20芯J-Link仿真插頭。選配14芯J-Link仿真插頭。帶J-LinkTCP/IPserver,允許通過(guò)TCP/IP網(wǎng)絡(luò)使用J-Link。4.2.2J-Link支持ARM內(nèi)核ARM7TDMI(Rev1)ARM7TDMI(Rev3)ARM7TDMI-S(Rev4)ARM720T/ARM920TARM926EJ-SARM946E-SARM966E-SARM11Cortex-M3表4-1速度信息RevisionARM7MemorydownloadARM9MemorydownloadJ-LinkRev.1-4150.0kB/s(4MHzJTAG)75.0kB/s(4MHzJTAG)J-LinkRev.5-8720.0kB/s(12MHzJTAG)550.0kB/s(12MHzJTAG)J-TraceRev.1420.0kB/s(12MHzJTAG)280.0kB/s(12MHzJTAG4.2.3J-Link在IAR開(kāi)發(fā)環(huán)境調(diào)試過(guò)程在IAR既可以使用IAR提供的JLINK的驅(qū)動(dòng),也可以使用RDI接口的驅(qū)動(dòng),推薦使用RDI接口的驅(qū)動(dòng),因?yàn)镮AR版本的JLINK對(duì)速度和功能做了限制。首先打開(kāi)一個(gè)工程,然后按照下圖開(kāi)始進(jìn)入設(shè)置頁(yè)面:圖4-4選項(xiàng)設(shè)置界面圖4-5選項(xiàng)設(shè)置界面

5程序設(shè)計(jì)5.1LPC1768芯片底層代碼ARM芯片開(kāi)發(fā)應(yīng)用的重要環(huán)節(jié)之一底層開(kāi)發(fā),即用匯編和C語(yǔ)言混合編程來(lái)啟動(dòng)代碼,系統(tǒng)配置及部份啟動(dòng)代碼程序如下:config.h#ifndef__CONFIG_H#define__CONFIG_H#ifndefTRUE#defineTRUE1#endif#ifndefFALSE#defineFALSE0#endiftypedefunsignedcharuint8;/*無(wú)符號(hào)8位整型變量*/typedefsignedcharint8;/*有符號(hào)8位整型變量*/typedefunsignedshortuint16;/*無(wú)符號(hào)16位整型變量*/typedefsignedshortint16;/*有符號(hào)16位整型變量*/typedefunsignedintuint32;/*無(wú)符號(hào)32位整型變量*/typedefsignedintint32;/*有符號(hào)32位整型變量*/typedeffloatfp32;/*單精度浮點(diǎn)數(shù)(32位長(zhǎng)度)*/typedefdoublefp64;/*雙精度浮點(diǎn)數(shù)(64位長(zhǎng)度)*/#include"nxp/iolpc1768.h"#include"stdio.h"#include"intrinsics.h"http://ARM核特征頭函數(shù)/*****************************************************************************系統(tǒng)時(shí)鐘配置:Fosc、Fcclk、Fcco、Fpclk/*****************************************************************************/#defineFosc12000000//時(shí)鐘頻率:12MHz(晶振頻率范圍:10MHz~25MHz)。#defineFcclk(Fosc*5)//系統(tǒng)時(shí)鐘:60MHz(系統(tǒng)頻率范圍:Fcclk=(1~32)*Fosc,且<=60MHZ)。#defineFcco(Fcclk*4)//流控振蕩頻率:240MHz(允許頻率范圍:Fcco=156MHz~320MHz,且必須為Fcclk的2、4、8、16倍)。#defineFpclk(Fcclk/4)*2//外設(shè)時(shí)鐘頻率:30MHz(Fpclk必須為(Fcclk/4)的1、2、4倍,且不能高于Fcclk)。#defineKOM_HIO1SET_bit.P1_24=1;#defineKOM_LIO1CLR_bit.P1_24=1;voidZLG7289_cmd_dat(charcmd,chardat);voidZLG7289_Init();#endif部份啟動(dòng)代碼MODE_MSKDEFINE0x1F;//設(shè)置比特位CPSR模式USR_MODEDEFINE0x10;//用戶模式FIQ_MODEDEFINE0x11;//快速中斷請(qǐng)求模式IRQ_MODEDEFINE0x12;//中斷請(qǐng)求模式SVC_MODEDEFINE0x13;//管理模式ABT_MODEDEFINE0x17;//終止模式UND_MODEDEFINE0x1B;//未定義模式SYS_MODEDEFINE0x1F;//系統(tǒng)模式mrsr0,cpsr;//原始PSR值bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#SVC_MODE;//設(shè)置管理模式位msrcpsr_c,r0;//改變模式ldrsp,=SFE(SVC_STACK);//SVC_STACK結(jié)束bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#ABT_MODE;//終止模式設(shè)置位msrcpsr_c,r0;//改變模式ldrsp,=SFE(ABT_STACK);//ABT_STACK結(jié)束bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#UND_MODE;//未定義模式設(shè)置位msrcpsr_c,r0;//改變模式ldrsp,=SFE(UND_STACK);//UND堆棧結(jié)束bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#FIQ_MODE;//設(shè)置有限脈沖響應(yīng)位msrcpsr_c,r0;//改變模式位ldrsp,=SFE(FIQ_STACK);bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#IRQ_MODE;//設(shè)置中斷請(qǐng)求位msrcpsr_c,r0;//改變模式位ldrsp,=SFE(IRQ_STACK);//結(jié)束中斷請(qǐng)求堆棧bicr0,r0,#MODE_MSK;//清除模式位orrr0,r0,#SYS_MODE;//設(shè)置系統(tǒng)模式位msrcpsr_c,r0;//改變模式位ldrsp,=SFE(CSTACK);//結(jié)束堆棧類5.2主程序圖5-1主環(huán)路程序代碼:#include"nxp/iolpc1768.h"#include"type.h"#include"irq.h"#include"target.h"#include"intrinsics.h"#include"hw.h"#include"hmi.h"intmain(void){uint8lines[]={0xfd,0x23,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x10,0x00,0x90,0xdd,0xcc,0xbb,0xaa};//畫(huà)線數(shù)組uint8addrxy1[]={0xfd,0x23,0x00,0x08,0,160,0,45,0,160,0,20,0xdd,0xcc,0xbb,0xaa};//uint8addrxy1[]=uint8state=0;//界面狀態(tài)變量定義、賦值uint16touch_x=0x0;//觸摸點(diǎn)X坐標(biāo)變量定義/賦(任意)初值uint16touch_y=0x0;//觸摸點(diǎn)Y坐標(biāo)變量定義/賦(任意)初值uint8pic_id=0x1f;//圖片編號(hào)變量定義、賦值uint8option3=0x3;//二級(jí)目錄啟動(dòng)停止判斷TargetResetInit();//目標(biāo)板初始化UART1_Init();//UART1初始化DelayMS(100);//用于做其他處理或延時(shí),使得彩屏終端上電完SetColor(0x6781F,0x06ff);//白底藍(lán)WaitNoBusy();//LCM空閑判跳DisPicture(2);//顯示第1幅圖片SetColor(0x9152,0x6eff);ClearScreen();//清屏(調(diào)色板設(shè)置后必須清屏)DelayMS(10);PutString(10,10,0x12,"二零一二界畢業(yè)設(shè)計(jì)");DelayMS(100);PutString(65,60,0x13,"基于物聯(lián)網(wǎng)的");DelayMS(100);PutString(100,100,0x13,"安保系統(tǒng)");DelayMS(100);PutString(170,190,0x12,"西安歐亞學(xué)院");DelayMS(100);PutString(150,210,0x12,"通信工程四人小組");DelayMS(3000);PageMenu();//菜單函數(shù)for(;;)//循環(huán)體{WaitNoBusy();//無(wú)觸摸判跳switch(state)//散轉(zhuǎn)(條件跳轉(zhuǎn)){//主菜單界面case0:if(GetTouchValue(&touch_x,&touch_y))//觸摸判斷,返回觸摸值{pic_id=GetTouchID(touch_x,touch_y);//獲得圖片ID,同時(shí)改變顏色if(pic_id<12)//ID邊界判跳{Page2();panbie(pic_id);state=1;//跳轉(zhuǎn)界面狀態(tài)}elsebreak;}break;case1:if(GetTouchValue(&touch_x,&touch_y)){option3=TouchValid(touch_x,touch_y);{if(option3==0){Page2();state=panbie_bt(pic_id);}elseif(option3==1){Page2();panbie(pic_id);state=1;}elseif(option3==2){WaitNoTouch();DelayMS(15);//延時(shí)state=2;}elseif(option3==3){WaitNoTouch();DelayMS(15);//延時(shí)state=2;}else{WaitNoTouch();state=1;}break;}}break;//在下級(jí)界面中被按了返回鍵case2:PageMenu();state=0;break;default:break;}}}5.3系統(tǒng)初化設(shè)計(jì)(1)程序流程圖圖5-2系統(tǒng)初始化(2)程序源代碼voidsystem_init(){/*VPB分頻系數(shù)配置*/PLLCON=1;//PLL使能(開(kāi)啟)#if((Fcclk/4)/Fpclk)==1//VPB總線時(shí)鐘為處理器時(shí)鐘的1/4時(shí)VPBDIV=0;//VPB分頻器設(shè)置為0#endif#if((Fcclk/4)/Fpclk)==2//VPB總線時(shí)鐘為處理器時(shí)鐘的1/2時(shí)VPBDIV=2;//VPB分頻器設(shè)置為2#endif#if((Fcclk/4)/Fpclk)==4//VPB總線時(shí)鐘與處理器時(shí)鐘相同VPBDIV=1;//VPB分頻器設(shè)置為1#endif/*PLL倍頻/分頻值自動(dòng)配置*/#if(Fcco/Fcclk)==2//流控振蕩頻率是系統(tǒng)頻率的2倍時(shí)PLLCFG=((Fcclk/Fosc)-1)|(0<<5);//PLLCFG配置寄存器,4:0PLL倍頻器值,6:3分頻器值。#endif#if(Fcco/Fcclk)==4PLLCFG=((Fcclk/Fosc)-1)|(1<<5);#endif#if(Fcco/Fcclk)==8PLLCFG=((Fcclk/Fosc)-1)|(2<<5);#endif#if(Fcco/Fcclk)==16PLLCFG=((Fcclk/Fosc)-1)|(3<<5);#endifPLLFEED=0xaa;//PLL饋送寄存器使PLLCOM/PLLCFG的值更改生效。PLLFEED=0x55;while((PLLSTAT&(1<<10))==0);//等待PLL鎖存PLLCON=3;//將PLL作為時(shí)鐘源連接到微控制器。PLLFEED=0xaa;PLLFEED=0x55;//存儲(chǔ)器加速配置MAMCR=0;#ifFcclk<20000000MAMTIM=1;#else#ifFcclk<40000000MAMTIM=2;#elseMAMTIM=3;#endif#endifMAMCR=2;//VIC初始化VICIntSelect=0;VICIntEnClear=0xFFFFFFFF;VICSoftIntClear=0xFFFFFFFF;VICProtection=0;VICVectAddr=0;VICDefVectAddr=0;}5.4UARTO初始化(1)程序流程圖圖5-3程序流程圖(2)程序源代碼voiduart0_init(){uint32baud=115200;U0LCR=0x83;//數(shù)據(jù)格式設(shè)置(字長(zhǎng)、停止位、奇偶選擇/校驗(yàn)位)/除數(shù)鎖存器訪問(wèn)使能。U0DLM=((Fpclk/16)/baud)/256;//除數(shù)鎖存器高字節(jié)計(jì)算。U0DLL=((Fpclk/16)/baud)%256;//除數(shù)鎖存器低字節(jié)計(jì)算。U0LCR=0x03;//數(shù)據(jù)格式設(shè)置/除數(shù)鎖存寄存器訪問(wèn)禁能。}5.5GPIO模塊程序GPIO控制蜂鳴器程序代碼:voidDelayNS(uint32dly){uint32i;for(;dly>;dly--)for(i=0;<5000;i++)}/*******************************名稱main()功能控制蜂鳴器蜂鳴*******************************intmain(void){PINSEL0=0x00000000;IO0DIR=BEEPCON;while(1){IO0SET=BEEPCON;DelayNS(10);IO0CLR=BEEPCON;DelayNS(10);}return(0);}5.6RTC模塊實(shí)時(shí)時(shí)鐘日歷RTC程序代碼:intmain(void){TargetResetInit();/*初始化RTC模塊*/RTCInit();local_time.RTC_Sec=0;local_time.RTC_Min=0;local_time.RTC_Hour=0;local_time.RTC_Mday=8;local_time.RTC_Wday=3;local_time.RTC_Yday=12;/*當(dāng)前時(shí)間03/12/2012*/local_time.RTC_Mon=03;local_time.RTC_Year=2012;RTCSetTime(local_time);/*設(shè)置當(dāng)前時(shí)間*/alarm_time.RTC_Sec=0;alarm_time.RTC_Min=0;alarm_time.RTC_Hour=0;alarm_time.RTC_Mday=1;alarm_time.RTC_Wday=0;alarm_time.RTC_Yday=21;/*報(bào)警時(shí)間03/21/2012*/alarm_time.RTC_Mon=3;alarm_time.RTC_Year=2012;RTCSetAlarm(alarm_time);/*設(shè)置報(bào)警時(shí)間*//*主要用于安裝RTC定時(shí)器處理報(bào)警控制*///if(install_irq(RTC_INT,(void*)RTCHandler,HIGHEST_PRIORITY)==FALSE)//此處報(bào)錯(cuò){while(1);/*verybadhappened*/}/**maskoffalarmmask,turnonIMYEARinthecounterincrementinterruptRegister**/RTCSetAlarmMask(AMRSEC|AMRMIN|AMRHOUR|AMRDOM|AMRDOW|AMRDOY|AMRMON|AMRYEAR);//CIIR=IMMIN|IMYEAR;//此處報(bào)錯(cuò)/*2012/03/21/00:00:00在此時(shí)報(bào)警*/RTCStart();while(1){/*進(jìn)入死循環(huán)*/current_time=RTCGetTime();if(alarm_on!=0){alarm_on=0;/*在現(xiàn)在的時(shí)間報(bào)警*/current_time=RTCGetTime();}}return0;}5.7觸屏操作界面模塊uint16touch_x=0x0;//觸摸點(diǎn)X坐標(biāo)變量定義/賦(任意)初值uint16touch_y=0x0;//觸摸點(diǎn)Y坐標(biāo)變量定義/賦(任意)初值/**************************框內(nèi)字符顯示**************************/PutString(105,20,0x12,"測(cè)控模塊功能界面");PutString(10,75,0x13,"一路檢測(cè)");PutString(180,75,0x13,"二路檢測(cè)");PutString(10,165,0x13,"三路檢測(cè)");PutString(180,165,0x13,"四路檢測(cè)");}/*******************************************************************函數(shù)名稱:GetTouchID()函數(shù)功能:主界面觸摸數(shù)據(jù)判跳。入口參數(shù):x,y坐標(biāo)數(shù)據(jù)。返回參數(shù):圖片編號(hào)(據(jù)此判斷觸摸信息,確定按下的區(qū)域)。*************************************************************/uint8GetTouchID(uint16x,uint16y){if(x>=10&&x<=110){if(y>=50&&y<=100)return0;elseif(y>=140&&y<=190)return2;}elseif(x>=180&&x<=300){if(y>=50&&y<=100)return1;elseif(y>=140&&y<=190)return3;}/*****************************************************************/voidPage2(void){uint16Rectangles2[]={//x_sy_sx_ey_e//矩形坐標(biāo)15,65,87,101,//0組坐標(biāo)15,121,87,157,//1組坐標(biāo)15,177,87,213,//2組坐標(biāo)120,60,300,220//3組坐標(biāo)};/*********************矩形框&字符前景/背景色設(shè)置****************/SetColor(0x9152,0x0eff);//矩形框前景/背景色設(shè)置ClearScreen();//清屏(調(diào)色板設(shè)置后必須清屏)DrawRectangles(Rectangles2,4);//畫(huà)矩形框組:共3組(利用指針實(shí)現(xiàn))SetColor(0xffd0,37768);//字符前景/背景色設(shè)置SetC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論