嵌入式課程設(shè)計(jì)_第1頁(yè)
嵌入式課程設(shè)計(jì)_第2頁(yè)
嵌入式課程設(shè)計(jì)_第3頁(yè)
嵌入式課程設(shè)計(jì)_第4頁(yè)
嵌入式課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(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)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上武漢華夏理工學(xué)院課 程 設(shè) 計(jì)課程名稱 嵌入式技術(shù)與應(yīng)用課程設(shè)計(jì)題 目 基于ARM9的數(shù)據(jù)采集程序設(shè)計(jì)專 業(yè) 自動(dòng)化 班 級(jí) 自動(dòng)化 1133 學(xué) 號(hào) 姓 名 成 績(jī) 指導(dǎo)教師 2016年11 月14日專心-專注-專業(yè)課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名: 專業(yè)班級(jí): 自動(dòng)化1133 指導(dǎo)教師: 工作單位:信息工程學(xué)院設(shè)計(jì)題目:基于ARM9的數(shù)據(jù)采集程序設(shè)計(jì)初始條件:1、硬件平臺(tái)為博創(chuàng)經(jīng)典UP-NETARM2410實(shí)驗(yàn)箱(S3C2410處理器)。2、軟件平臺(tái)為eclipse+keil+PUTTY(串口調(diào)試助手)。設(shè)計(jì)任務(wù):(在規(guī)定的時(shí)間內(nèi)完成下列任務(wù))1、通過(guò)S3C2410X(AR

2、M9)的ADC采集實(shí)驗(yàn)箱三個(gè)電位器的值,旋轉(zhuǎn)電位器時(shí)可在屏幕上看到當(dāng)前采集值的變化。2、中斷功能:按下中斷按鍵觸發(fā)中斷,中斷時(shí)三個(gè)LED燈閃爍一次,且屏幕上打印正在中斷的提示。3、報(bào)警功能:設(shè)定一個(gè)臨界值(如500),當(dāng)采集的值超過(guò)此臨界值時(shí),燈閃爍報(bào)警,三個(gè)電位器與三個(gè)燈一一對(duì)應(yīng)。時(shí)間安排:各時(shí)間段的任務(wù)可以交替進(jìn)行課程設(shè)計(jì)安排在第10-11周,地點(diǎn)在532實(shí)驗(yàn)室,設(shè)計(jì)步驟及時(shí)間進(jìn)度如下:時(shí)間階段內(nèi)容第一周星期一介紹題目,查找相關(guān)資料第一周星期二需求分析第一周星期三硬件總體設(shè)計(jì)、軟件總體設(shè)計(jì),畫(huà)出硬件原理圖和程序流程圖第一周星期四星期五編寫(xiě)、調(diào)試、修改程序第二周星期一星期三軟硬件聯(lián)調(diào)第二周星

3、期四撰寫(xiě)設(shè)計(jì)報(bào)告第二周星期五檢查、答辯后修改設(shè)計(jì)報(bào)告設(shè)計(jì)報(bào)告撰寫(xiě)格式要求:(按提供的設(shè)計(jì)報(bào)告統(tǒng)一格式撰寫(xiě))報(bào)告內(nèi)容應(yīng)包括:(1)實(shí)現(xiàn)的功能 (2)軟硬件平臺(tái)(3)硬件原理分析及原理圖(4)硬件驅(qū)動(dòng)的實(shí)現(xiàn)步驟及分析(5)程序流程圖代碼及注釋(6)工程樹(shù)形結(jié)構(gòu)截圖(7)運(yùn)行及調(diào)試的步驟(圖文并茂) (8)總結(jié)體會(huì)指 導(dǎo) 教 師 簽 名:2016年 11 月 7 日系主任(或責(zé)任教師)簽名: 2016年 11月7日目錄第1章 需求分析.1第2章硬件及驅(qū)動(dòng)系統(tǒng)的實(shí)現(xiàn).2 2.1原理圖與引腳.2 2.1.1LED引腳.2 2.1.2 UART.22.1.3 中斷開(kāi)關(guān)INTKEY.2 2.1.4 ADC驅(qū)

4、動(dòng)引腳.3 2.2配置.3 2.2.1 LED燈分析配置.32.2.2 UART分析 配置.32.2.3 中斷分析配置.72.2.4 ADC及其驅(qū)動(dòng)分析配置.10 2.3驅(qū)動(dòng).122.3.1 相關(guān)寄存器定義.142.3.2 實(shí)現(xiàn)驅(qū)動(dòng).152.3.3 編寫(xiě)main函數(shù).172.3.4修改兩個(gè)makefile.17第3章系統(tǒng)運(yùn)行及調(diào)試.183.1啟動(dòng)串口調(diào)試助手.183.2啟動(dòng)H-JTAG.183.3運(yùn)行eclipse工程.193.4添加文件到工程.193.5調(diào)試工程.193.6 實(shí)驗(yàn)現(xiàn)象.21第.23參考文獻(xiàn) .24附錄 .25第1章需求分析1.1 考核要求1通過(guò)S3C2410X(ARM9)的A

5、DC采集實(shí)驗(yàn)箱三個(gè)電位器的值,旋轉(zhuǎn)電位器時(shí)可在屏幕上看到當(dāng)前采集值的變化。2中斷功能:按下中斷按鍵觸發(fā)中斷,中斷時(shí)三個(gè)LED燈閃爍一次,且屏幕上打印正在中斷的提示。3報(bào)警功能:設(shè)定一個(gè)臨界值(如500),當(dāng)采集的值超過(guò)此臨界值時(shí),燈閃爍報(bào)警,三個(gè)電位器可與三個(gè)燈一一對(duì)應(yīng),并且發(fā)出聲音警報(bào)。1.2 軟硬件平臺(tái)1.2.1硬件平臺(tái) 博創(chuàng)經(jīng)典UP-NETARM2410實(shí)驗(yàn)箱(S3C2410處理器)。1.2.2軟件平臺(tái)eclipse+keil+PUTTY(串口調(diào)試助手)。第2章硬件及驅(qū)動(dòng)系統(tǒng)的實(shí)現(xiàn)2.1原理圖與引腳2.1.1 LED引腳1 LED燈及報(bào)警因?yàn)橐獙?shí)現(xiàn)三個(gè)LED燈閃爍,涉及到LED,通過(guò)搜索

6、Database第6章Device找到如圖2所示的引腳圖,找到了GPC5,GPC6,GPC7引腳。當(dāng)中斷開(kāi)關(guān)按下時(shí),LED閃爍一次,同時(shí),LED作為報(bào)警器,當(dāng)超過(guò)臨界阻值時(shí)(實(shí)驗(yàn)中為500),燈閃爍報(bào)警。2.1.2 UART圖2 RS232引腳定義因?yàn)橐邮諗?shù)據(jù)(電位器的阻值),所以必然涉及到串行數(shù)據(jù)傳輸接口。如上圖所示,可以看到各個(gè)引腳的信息,由于只需要接收數(shù)據(jù),實(shí)驗(yàn)時(shí)接RS232-0。 2.1.3中斷開(kāi)關(guān)INTKEY圖3 INTKEY引腳原理圖 因?yàn)橐獙?shí)現(xiàn)按下中斷按鍵觸發(fā)中斷,所以通過(guò)搜索Database第6章Device找到如圖2所示的引腳圖,找到了EINT5引腳。2.1.4 ADC驅(qū)動(dòng)

7、引腳圖4 ADC驅(qū)動(dòng)引腳原理圖 因?yàn)槭遣杉瘜?shí)驗(yàn)箱電位器的值,要把模擬信號(hào)轉(zhuǎn)換成為數(shù)字信號(hào),這其中涉及到AD/DA轉(zhuǎn)換。所以通過(guò)搜索Database第10章AD/DA 找到圖1的引腳圖。首先實(shí)現(xiàn)是采集3個(gè)電位器的值,找到了AINT0,AINT1,AINT2引腳。2.2 具體配置 2.2.1 LED燈分析配置 (1)通過(guò)到第九章I/O搜索發(fā)現(xiàn)該引腳是多功能引腳,如下表,需要進(jìn)行配置,即作如下配置: GPCCON11:10=0b01;GPCCON13:12=0b01;GPCCON15:14=0b01; 表1 Port C控制寄存器表2 PORT C控制寄存器表3 GPCDAT的描述 (2)無(wú)需用到時(shí)

8、鐘,故無(wú)需分頻。 (3)因?yàn)橐刂茻舻狞c(diǎn)亮和熄滅,故要對(duì)GPCDAT進(jìn)行配置,配置見(jiàn)led程序。2.2.2 UART分析配置 (1)通過(guò)到第九章I/O搜索RXD0和TXD0,找到了該引腳,是多功能引腳。 (2)因需要接收更新的數(shù)據(jù),uart沒(méi)有時(shí)鐘,故需要給它配置時(shí)鐘。在CLOCK章搜索uart得到下表表4 CLK控制寄存器 由于使用的是uart0,故應(yīng)作如下配置:CLKCON10=0b1,即設(shè)置PCLK到串口。 (3)其它參數(shù)配置與相關(guān)寄存器在uart一章搜索uart有:UART行控制寄存器(ULCONn),其功能及位描述如下表所示表5 uart行控制寄存器 UART控制寄存器(UCONn)

9、,其功能及位描述如下表所示表6 UART控制寄存器 UART FIFO控制寄存器(UFCONn),其功能及位描述如下表所示表7 UART FIFO控制寄存器 UART modem控制寄存器(UMCONn),其功能及位描述如下表所示表8 UART modem寄存器 UART TX/RX狀態(tài)寄存器(UMCONn),其功能及位描述如下表所示 表9 UART TX/RX狀態(tài)寄存器 此寄存器系統(tǒng)已經(jīng)配置好,用來(lái)判斷發(fā)送或者接收是否完成的寄存器。 UART 波特率因子寄存器(UBRDIVn),其功能及位描述如下表所示 表10 UART 波特率因子寄存器 2.2.3 中斷配置 (1)到第九章I/O搜索發(fā)現(xiàn)E

10、INT5是多功能引腳,需要進(jìn)行配置,即EXTINT022:20=0b01;即設(shè)置的是下降觸發(fā)。表11 外部中斷控制寄存器表12 外部中斷掛起寄存器 即中斷請(qǐng)求,清除外部中斷請(qǐng)求。引腳設(shè)置見(jiàn)表13。表13 PORT F控制寄存器 (2)無(wú)需用到時(shí)鐘,無(wú)需分頻。 (3)參數(shù)配置與相關(guān)寄存器在第十四章Interrupt controller搜索EINT有: 表14為EINTMASK寄存器,其功能及位描述如下表所示 ,這是多功能管腳中斷使能,即外部中斷使能,使用時(shí)配置為EINTMASK5=0b0。表14 外部中斷屏蔽寄存器 表15為SRCPND寄存器,其功能及位描述如下表所示,這是清除中部的中斷源,使

11、用時(shí)配置為SRCPND4=0b1。表15 SRCPND(中斷源掛起)寄存器 表16為INTMOD寄存器,其功能及位描述如下表所示,這是指示中斷源為irq類型,使用時(shí)配置為INTMOD4=0b0。 表16 INTMOD(中斷模式)寄存器 表17為INTMSK寄存器,其功能及位描述如下表所示,表內(nèi)部中斷使能,使用時(shí)配置為INTMSK4=0b0。表17 INTMSK(中斷屏蔽)寄存器 表18為INTPND寄存器,其功能及位描述如下表所示。用來(lái)清除內(nèi)部中斷請(qǐng)求,使用時(shí)配置為INTPND4=0b1。表18 INTPND(中斷掛起)寄存器 表19是中斷偏移寄存器,指示IRQ中斷源。表19 INTOFFSE

12、T(中斷偏移)寄存器 2.2.4 ADC及其驅(qū)動(dòng)分析配置 (1)通過(guò)到第9章I/O 一章搜索沒(méi)找到,發(fā)現(xiàn)AINT0,AINT1,AINT2引腳并不是多功能引腳。 (2)因?yàn)橐皶r(shí)對(duì)數(shù)據(jù)進(jìn)行更新且系統(tǒng)的頻率過(guò)高,所以要對(duì)時(shí)鐘進(jìn)行分頻,搜索CLOCK章表20 CLK控制寄存器表21 ADCCON 從表20和21中可以看出需要做如下配置:CLKCON15=1,以便把系統(tǒng)時(shí)鐘給ADC;READ_START1=1,因?yàn)橐呀?jīng)使用了READ_START,因而可不用ENABLE_START。 (3)參數(shù)配置與相關(guān)寄存器在ADC一章搜索表22 ADC控制寄存器位描述 在通道選擇上,可通過(guò)SEL_MUX5:3進(jìn)行

13、選擇;通過(guò)配置PRSCVL13:6可進(jìn)行分頻,如PRSCVL13:6=1111 1111b表示256分頻;配置A/D轉(zhuǎn)換狀態(tài)標(biāo)志,ECFLG15=1。有關(guān)ADC啟動(dòng)延時(shí)寄存器如下表表23 ADCDLY 有關(guān)ADC轉(zhuǎn)換數(shù)據(jù)寄存器如下表表24 ADC轉(zhuǎn)換數(shù)據(jù)寄存器 對(duì)于普通的A/D轉(zhuǎn)換,使用ADCDAT0來(lái)保存轉(zhuǎn)換后的數(shù)據(jù)。其中XPDATA(正常ADC)是X位置的轉(zhuǎn)換數(shù)據(jù)值,也是正常A/D轉(zhuǎn)換的數(shù)據(jù)值,取值范圍為03FF。2.3驅(qū)動(dòng) 2.3.1相關(guān)寄存器的定義(1)工程-include-gpio-led.h,向其中添加如下代碼圖5 led.h(2)工程-include-uart-uart.h,向其

14、中添加如下代碼圖6 uart.h(3)工程-include-key-key.h,向其中添加如下代碼圖7 key.h(4)工程-include-adc-adc.h,向其中添加如下代碼圖8 adc.h2.3.2實(shí)現(xiàn)驅(qū)動(dòng)(1)在工程中新建drivers文件夾,在其中新建gpio文件夾,在gpio中新建led.c文件,在 led.c中添加如下代碼圖9 led.c(2)在工程中新建drivers文件夾,在其中新建uart文件夾,在uart中新建uart.c文件,在 uart.c中添加如下代碼圖10 uart.c(3)在工程中新建drivers文件夾,在其中新建key文件夾,在key中新建key.c文件,

15、在 key.c中添加如下代碼圖11 key.c(4)在工程中新建drivers文件夾,在其中新建adc文件夾,在adc中新建adc.c文件,在 adc.c中添加如下代碼圖12 adc.c2.3.3編寫(xiě)main函數(shù)編寫(xiě)main.c:common-main.c,向其中添加圖13 main.c2.3.4修改兩個(gè)Makefile將common文件夾中的Makefile復(fù)制到drivers-adc中,找到 “COBJS:=”改為 COBJS:=adc.o找到 “LIB:=”改為 LIB:=libadc.a并在工程中的Makefile,LIB+=common/libcommon.a后面加LIB+=driv

16、ers/libadc.a;第三章系統(tǒng)運(yùn)行及調(diào)試3.1啟動(dòng)串口調(diào)試首先連接串口線,一端連試驗(yàn)箱的RS232-0,另一端連電腦主機(jī)的串口。(1) 雙擊桌面的PUTTY.EXE,會(huì)出現(xiàn)如下界面,選中serial,將9600改為,圖14 putty進(jìn)入界面 (2)點(diǎn)中左邊樹(shù)形列表中的serial,將左邊最后一項(xiàng)改為None 。圖15 putty修改參數(shù)界面(3)點(diǎn)擊open 按鈕并撥動(dòng)實(shí)驗(yàn)箱電源開(kāi)關(guān),使實(shí)驗(yàn)箱處于通電狀態(tài),若串口調(diào)試界面顯示如下,表示串口通了,配置好了。按電腦任意鍵,光標(biāo)停在vivi 處,等待eclipse 程序運(yùn)行。圖16 putty主界面3.2啟動(dòng)H-JTAG先確定實(shí)驗(yàn)箱電源打開(kāi),

17、并口線連接好,然后直接點(diǎn)擊桌面上的H-JTAG圖標(biāo)(若沒(méi)有可從開(kāi)始菜單中搜索找到),可以自動(dòng)檢測(cè)到CPU的類型。圖20 H-JMP3.3 運(yùn)行eclipse 工程(1)創(chuàng)建eclipse 工程。點(diǎn)擊桌面的eclipse 圖標(biāo),直接點(diǎn)擊OK進(jìn)入eclipse(電腦默認(rèn)為D盤(pán)下的eclipse中),單擊File -New- C Project新建一個(gè)project_s3c2410 工程,然后點(diǎn)擊 Finish 即可。如下圖:(2)創(chuàng)建keil 工程。在eclipse 界面上,點(diǎn)擊uvision-creat new project ,即出現(xiàn)如下界面:選擇GCC 圖21 創(chuàng)建keil工程(3) 點(diǎn)ne

18、xt ,選擇S3C2410A設(shè)備,點(diǎn)擊Finish按鈕,這時(shí)會(huì)打開(kāi)keil軟件,關(guān)閉keil工程即可。3.4 添加文件到工程在之前新建的工程目錄下粘貼已經(jīng)寫(xiě)好的project_s3c2410文件夾,可直接替換原先的空文件夾。再在eclipse 下,刷新工程目錄,最后,按之前的步驟添加程序。3.5 調(diào)試工程(1)在eclipse下點(diǎn)run -Debug Congigurations -uvision project(雙擊),出現(xiàn)如下界面圖22 調(diào)試工程(2)分別點(diǎn)兩個(gè)Browse,選擇對(duì)應(yīng)的project_s3c2410及project_s3c2410.uvproj。(3)點(diǎn)擊Target Op

19、tions-output-Select Folder for objects然后返回上一級(jí)(紅色標(biāo)記處),出現(xiàn)如下界面圖23 調(diào)試工程(4)點(diǎn)擊OK后回到之前界面,再點(diǎn)Debug,會(huì)看到電腦默認(rèn)的是H-JTAG。(5)點(diǎn)擊OK-Debug ,開(kāi)始調(diào)試程序,如下圖圖24debug(6)出現(xiàn)下面的對(duì)話框時(shí)點(diǎn)Yes,圖25 調(diào)試成功界面綠色按表示“運(yùn)行”,看現(xiàn)象;紅色方塊表示“停止”;點(diǎn)擊右上角紅色下劃線可返回程序頁(yè)面進(jìn)行改進(jìn)。圖26運(yùn)行3.6 實(shí)驗(yàn)現(xiàn)象按下中斷按鈕,顯示打印doirq圖27 結(jié)果顯示界面 當(dāng)三個(gè)電位器大于500時(shí),燈會(huì)閃爍報(bào)警圖28 報(bào)警led燈閃爍第4章總結(jié)與體會(huì) 通過(guò)此次的課程

20、設(shè)計(jì),加深了ARM課程中所學(xué)到的基本理論知識(shí),也加深了通過(guò)使用數(shù)據(jù)手冊(cè)來(lái)查找相關(guān)信息。剛拿道題目時(shí),覺(jué)得還比較簡(jiǎn)單,想想無(wú)非是課本上的知識(shí),算一算就好了,可真正開(kāi)始進(jìn)行設(shè)計(jì)時(shí)便遇見(jiàn)了困難。課本上的知識(shí)都是在理想情況下求出的,且由于教材將的側(cè)重點(diǎn)不同,并未給出明確的算法,經(jīng)過(guò)很長(zhǎng)時(shí)間的翻閱資料也為能找出明確的方案,最后根據(jù)自己新找到的資料再結(jié)合老師平時(shí)教授的知識(shí),最后再回歸到教材上進(jìn)行總結(jié)??此埔粋€(gè)很簡(jiǎn)單的設(shè)計(jì),如果自己沒(méi)有親自動(dòng)手做,便永遠(yuǎn)不知道它是不是真的很簡(jiǎn)單。在做課程設(shè)計(jì)期間,我?guī)缀跆焯炫軋D書(shū)館,最后確定了設(shè)計(jì)方案。這次課程設(shè)計(jì),我充分鍛煉了自己的能力,包括查閱資料的能力,設(shè)計(jì)能力,與同

21、學(xué)相互探討的能力。也從課程設(shè)計(jì)中體會(huì)到了書(shū)本的知識(shí)真的很局限,它只是老師將我們帶進(jìn)去的一門(mén)工具,真要達(dá)到了學(xué)以致用必須要不斷的充實(shí)自己,學(xué)習(xí)各方面的知識(shí),不要局限在一本書(shū)上,從而真正達(dá)到理論聯(lián)系實(shí)際的目的參考文獻(xiàn)1 沈文斌,嵌入式硬件系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)實(shí)例詳解.北京:電子工業(yè)出版社,20052 張景璐,杜輝,吳友蘭編著.ARM9嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用案例. 北京:中國(guó)電力出版社.20083 熊茂華、楊震倫.ARM9嵌入式系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)應(yīng)用.北京:清華大學(xué)出版社.20094 程克非,嵌入式系統(tǒng)設(shè)計(jì).北京:機(jī)械工業(yè)出版社,20105 馬忠梅等,嵌入式系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2007.6李

22、新峰、何廣生?;贏RM9的嵌入式Linux開(kāi)發(fā)技術(shù)。電子工業(yè)出版社,2008 7孫天澤。嵌入式Linux操作系統(tǒng)。人民郵電出版社。2009 8楊水清、張劍。ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)技術(shù)詳解。電子工業(yè)出版社,2008 9俞建新、王健、宋健建。嵌入式系統(tǒng)基礎(chǔ)教程。機(jī)械工業(yè)出版社,2009 設(shè)計(jì)者: 湯立爭(zhēng) 日 期: 2016年 11 月 14 日附錄Led.h:#ifndef _LED_H_#define _LED_H_void led_init(void);void led_on(void);void led_off(void);void led2_on(void);void led1_

23、on(void);void led0_on(void);void led0_off(void);void led1_off(void);void led2_off(void);#endif / _LED_H_Uart.h:#ifndef UART_H_#define UART_H_#endif /* UART_H_ */#define CLKCON (*(volatile unsigned int *)0x4C00000C)#define UCON0 (*(volatile unsigned int *)0x)#define UBRDIV0 (*(volatile unsigned int *

24、)0x)#define ULCON0 (*(volatile unsigned int *)0x)#define UMCON0 (*(volatile unsigned int *)0xC)#define UFCON0 (*(volatile unsigned int *)0x)#define UTRSTAT0 (*(volatile unsigned int *)0x)#define UTXH0 (*(volatile unsigned int *)0x)#define URXH0 (*(volatile unsigned int *)0x)#define GPHCON (*(volatil

25、e unsigned int *)0x)void uart_init(void);void putc(char c);void puts(const char *str);char getc(void);key.h:#ifndef KEY_H_#define KEY_H_#define SRCPND (*(volatile unsigned int *) 0X4A )#define INTMOD (*(volatile unsigned int *) 0X4A )#define INTMSK (*(volatile unsigned int *) 0X4A )#define INTPND (*

26、(volatile unsigned int *) 0X4A )#define INTOFFSET (*(volatile unsigned int *) 0X4A)#define GPFCON (*(volatile unsigned int *) 0x)#define EXTINT0 (*(volatile unsigned int *) 0x)#define EINTMASK (*(volatile unsigned int *) 0xA4)#define EINTPEND (*(volatile unsigned int *) 0xA8)void key_init(void);void

27、 key_isr(void);#endif /* KEY_H_ */adc.h:#ifndef adc_H_#define adc_H_#define CLKCON (*(volatile unsigned int *) 0x4C00000C )#define ADCCON (*(volatile unsigned int *) 0x )#define ADCDAT0 (*(volatile unsigned int *) 0xC )void adc_init0(void);void adc_init1(void);void adc_init2(void);int adc_read(void)

28、;#endif /* adc_H_ */led.c:#include gpio/led.hvoid led_init(void) / led1 *(volatile unsigned int *)0x) &= (0x3 10); *(volatile unsigned int *)0x) |= 0x1 10; / led2 *(volatile unsigned int *)0x) &= (0x3 12); *(volatile unsigned int *)0x) |= 0x1 12; / led3 *(volatile unsigned int *)0x) &= (0x3 14); *(v

29、olatile unsigned int *)0x) |= 0x1 14;void led0_off(void)/ led1 置1熄滅*(volatile unsigned int *)0x) |= 0x1 5;void led1_off(void)/ led2*(volatile unsigned int *)0x) |= 0x1 6;void led2_off(void)/ led3*(volatile unsigned int *)0x) |= 0x1 7;void led_off(void)/ led1 置1熄滅*(volatile unsigned int *)0x) |= 0x1

30、5;/ led2*(volatile unsigned int *)0x) |= 0x1 6;/ led3*(volatile unsigned int *)0x) |= 0x1 7;void led0_on(void)/ led1清0點(diǎn)亮*(volatile unsigned int *)0x) &= (0x1 5);void led1_on(void)/ led2*(volatile unsigned int *)0x) &= (0x1 6);void led2_on(void)/ led3*(volatile unsigned int *)0x) &= (0x1 7);void led_

31、on(void)/ led1清0點(diǎn)亮*(volatile unsigned int *)0x) &= (0x1 5);/ led2*(volatile unsigned int *)0x) &= (0x1 6);/ led3*(volatile unsigned int *)0x) &= (0x1 7);uart.c:#include uart/uart.hvoid putc(char c)UTXH0 = c;while (!(UTRSTAT0 & (1 1);char getc(void)while (!(UTRSTAT0 & 1);return URXH0 & 0xff;void puts

32、(const char *str)int i = 0;while (stri != 0) if (stri = n) putc(r);putc(stri);i += 1;void uart_init(void)/muxed,GPHCON5:4=10, GPHCON7:6=10 GPHCON&=(0x34); GPHCON|=(0x24); GPHCON&=(0x36); GPHCON|=(0x26);/時(shí)鐘配置,搜索UART, CLKCON10 = 0b1(設(shè)置PCLK到串口) CLKCON|=(0x110);/設(shè)置數(shù)據(jù)位(5-8 bit),ULCON01:0 = 0b11(8位數(shù)據(jù)位) UL

33、CON0|=(0x3);/設(shè)置停止位,ULCON02 = 0b0(一位停止位) ULCON0&=(0x12);/設(shè)置校驗(yàn)位(奇/偶校驗(yàn)/不/強(qiáng)制0/1),ULCON05:3 = 0b000(不校驗(yàn)) ULCON0&=(0x73);/設(shè)置不為紅外模式?(No Infrared),ULCON06 = 0b0 ULCON0&=(0x16);/接收模式設(shè)置?UCON01:0 = 0b01(polling輪詢) UCON0&=(0x3); UCON0|=(0x1);/發(fā)送模式設(shè)置?UCON03:2 = 0b01(polling輪詢) UCON0&=(0x32); UCON0|=(0x12);/設(shè)置loo

34、p-back回送,UCON05 = 0b0(非Loop-back模式) UCON0&=(0x15);/實(shí)現(xiàn)錯(cuò)誤檢測(cè),UCON06 = 0b0(不產(chǎn)生錯(cuò)誤報(bào)告) UCON0&=(0x16);/設(shè)置接收超時(shí),UCON07 = 0b0(關(guān)閉超時(shí)) UCON0&=(0x17);/選擇PCLK時(shí)鐘,UCON010 = 0b0(選擇PCLK為串口時(shí)鐘) UCON0&=(0x110);/設(shè)置fifo,UFCON00 = 0b0(關(guān)閉,因用輪詢而不是中斷) UFCON0|=(0x1);/關(guān)閉發(fā)送請(qǐng)求RTS,不使用Modem,UMCON00 = 0b0 UMCON0|=(0x1);/設(shè)置自動(dòng)流控,UMCON04

35、 = 0b0(關(guān)閉自動(dòng)流控) UMCON0&=(0x14);/設(shè)置波特率,UBRDIV0 = / / 16 - 1 = 26 UBRDIV0 = 26; key.c:#include key/key.hvoid key_init(void) /muxed,GPFCON11:10=0x10 GPFCON&=(310);GPFCON|=(0x210);/下降沿觸發(fā)EXTINT022:20=0b010EXTINT0&=(0x720);EXTINT0|=(0x220);/irq類型INTMOD4=0b0INTMOD&=(14);/外部中斷使能 EINTMASK5=0b0EINTMASK&=(15);/ 內(nèi)部中斷使能INTMSK4INTMS

溫馨提示

  • 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)論