版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 報 告 書</p><p> 課程名稱 嵌入式系統(tǒng)原理及應(yīng)用 </p><p> 題 目 ARM9 I/O口控制LED流水燈程序設(shè)計 </p><p> 分 院 電 信 分 院 &
2、lt;/p><p> 專業(yè)班級 通信工程 2008-2 </p><p> 學(xué) 號 </p><p> 學(xué)生姓名 </p><p> 指導(dǎo)教師
3、 </p><p> 2012年 12月 30 日</p><p> 課 程 設(shè) 計 任 務(wù) 書</p><p> 一、課程設(shè)計題目 ARM9 I/O口控制LED流水燈想設(shè)計 </p><p> 二、課程設(shè)計工作:自 2011 年 12 月 28 日起至 2012 年 1
4、 月 2 日止。</p><p> 三、課程設(shè)計的內(nèi)容要求:</p><p> 1.了解ARM9的I/O口的工作原理;</p><p> 2.基于arm920T的內(nèi)核,在開發(fā)板或者實驗箱上,實現(xiàn)LED的流水控制;</p><p> 3.了解I/O口怎么控制LED的輸出;</p><p> 4.掌握設(shè)置I/
5、O口的狀態(tài)需要設(shè)置的寄存器GPBCON、GPBDAT、GPBUP;</p><p> 5.掌握在ADS環(huán)境下建立工程,用H-JTAG來調(diào)試程序,生成.HEX文件;</p><p> 6.總結(jié)本次課程設(shè)計的知識點。</p><p> 學(xué)生簽名: </p><p> 201 年 月 日</p><
6、;p><b> 目 錄</b></p><p> 課程設(shè)計任務(wù)書........................................................................2</p><p> 第1章 課程設(shè)計目的......................................................
7、........4</p><p> 第2章 S3C2440的I/O口配置..............................................5</p><p> 第3章 S3C2440的I/O口寄存器..........................................6</p><p> 第4章 課程設(shè)計過程.....
8、.........................................................9</p><p> 4.1 設(shè)計步驟.........................................................................9</p><p> 4.2 部分原理圖.........................
9、............................................9</p><p> 4.3 源程序............................................................................10</p><p> 4.4 編譯調(diào)試結(jié)果..................................
10、..............................17</p><p> 第8章 課程設(shè)計心得...........................................................19</p><p> 參考文獻(xiàn)..................................................................
11、.................20</p><p> 第1章 課程設(shè)計目的</p><p> 這學(xué)期開了嵌入式這門課程,之前就了解到嵌入式系統(tǒng)是當(dāng)前最熱門最有發(fā)展前途的IT 應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特定專用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應(yīng)要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手
12、機(jī)、可視電話、PDA、電子字典、VCD/DVD/MP3 Player、機(jī)頂盒(Set Top Box)、數(shù)字相機(jī)(DC)、數(shù)字?jǐn)z像機(jī)(DV)、高清電視(HDTV)、游戲機(jī)、智能玩具、交換機(jī)、路由器、數(shù)控設(shè)備或儀表、汽車電子、家電控制系統(tǒng)、醫(yī)療儀器、航天航空設(shè)備等等都是典型的嵌入式系統(tǒng)。</p><p> 隨著社會的發(fā)展,嵌入式在未來的應(yīng)用會越來越廣泛。隨著物聯(lián)網(wǎng)的時代的到來,電器將會與互聯(lián)網(wǎng),移動電話成為一體,
13、通過無線通信技術(shù)以及互聯(lián)網(wǎng)技術(shù)將可以使人們在任何時候控制電器等的工作。</p><p> 通過這次課程設(shè)計使我們了解基本的嵌入式編程方法以及培養(yǎng)我們對嵌入式編程的興趣,與此同時,我們還能鞏固一下C編程和匯編編程基礎(chǔ),為將來的嵌入式學(xué)習(xí)和工作做好充足的準(zhǔn)備!</p><p> 第2章 S3C2440的I/O口配置</p><p> 在S3C2440 的CPU中有
14、130多個多功能的輸入輸出引腳,分為8個端口,如下所示:</p><p> - Port A(GPA): 25-output port</p><p> - Port B(GPB): 11-input/out port</p><p> - Port C(GPC): 16-input/output port</p><p> - Po
15、rt D(GPD): 16-input/output port</p><p> - Port E(GPE): 16-input/output port</p><p> - Port F(GPF): 8-input/output port</p><p> - Port G(GPG): 16-input/output port</p><
16、p> - Port H(GPH): 9-input/output port</p><p> - Port J(GPJ): 13-input/output port</p><p> 每個端口可以很容易地通過軟件配置,以滿足不同的系統(tǒng)配置和設(shè)計要求。如果引腳不用于復(fù)用功能,則引腳可配置為普通的I/O口。它們的寄存器是相似的:GPxCON用于選擇引腳功能,GPxDAT用于都/寫引
17、腳數(shù)據(jù),GPxUP用于確定是否使用內(nèi)部上拉電阻(x為A、B、..........、H、J,注意沒有GPAUP)。</p><p> 1.GPxCON中每兩位控制一根引腳:</p><p> 00表示輸入、01表示輸出、10表示特殊功能、11保持不用。其中GPBCON中共有22位來管理GPB的功能設(shè)置,每兩位來管理一個口的功能設(shè)置,兩位共有四種狀態(tài),當(dāng)GPB中的兩位值為00時,配置為輸入
18、功能;配置為01時,是輸出功能;10為復(fù)用功能;11為保留狀態(tài)。 </p><p> 2.GPxDAT用于讀/寫引腳:</p><p> 當(dāng)引腳設(shè)為輸入時,讀此寄存器可知相應(yīng)引腳的狀態(tài)是高是低。</p><p> 當(dāng)引腳設(shè)為輸出時,寫此寄存器相應(yīng)位可令此引腳輸出低電平或高電平。</p><p><b> 3. GpxUP&l
19、t;/b></p><p> GPBUP宮11位,每一位代表一個管腳的上拉功能,某位為0時,相應(yīng)引腳上拉功能被使能,為1時,相應(yīng)引腳被禁止使用上拉功能。</p><p> 第3章 S3C2440的I/O口寄存器</p><p> LED燈是接在某一個I/O上的,點亮或者熄滅LED燈其實就是對I/O寄存器的操作。ARM的I/O口寄存器主要包括端口配置寄存器
20、GPXCON、端口數(shù)據(jù)寄存器GPXDAT、端口上拉電阻使能寄存器GPXUP、MISCELLANEOUS控制寄存器和外部中斷寄存器五種(其中X為芯片的I/O口字母)。在這個課程設(shè)計我們只用前三個寄存器,下面就對著三個寄存器進(jìn)行簡單的介紹。</p><p> 對于ARM芯片來說,它的寄存器很多,為了區(qū)分不同的寄存器,系統(tǒng)給每個寄存器都分配了一個固定的地址,地址就像每個人的身份證一樣,是唯一的。那么當(dāng)你使用這個地址的
21、時候ARM就知道你要使用哪個寄存器了,所以在編程的時候,首先要聲明待操作的寄存器地址。下表就是本次課程設(shè)計要用到的寄存器的地址和位定義:</p><p> ARM芯片找到相應(yīng)寄存器后,也先要設(shè)置端口配置寄存器GPBCON,也就是告訴寄存器做好接收數(shù)據(jù)或者輸出數(shù)據(jù)或者響應(yīng)外部中斷的準(zhǔn)備,下表為它的功能描述:</p><p> ARM設(shè)置完I/O口狀態(tài)后,就準(zhǔn)備讀/寫數(shù)據(jù)了。這個功能可以通
22、過設(shè)置數(shù)據(jù)寄存器GPBDAT來實現(xiàn)。下表即為它的功能描述: </p><p> ARM設(shè)置完I/O口狀態(tài)后,就準(zhǔn)備讀/寫數(shù)據(jù)了。這個功能可以通過設(shè)置數(shù)據(jù)寄存器GPBDAT來實現(xiàn)。下表即為它的功能描述: </p><p> 設(shè)置完前兩個寄存器后,還要設(shè)置上拉電阻使能寄存器GPBUP,顧名思義,它的作用就是告訴ARM這個端口要不要配置上拉電阻。上拉電阻、下拉電阻的作用在于,當(dāng)IO引腳處于第
23、三態(tài)(即不是高電平,也不是低電平,而是高阻態(tài),相當(dāng)于沒接芯片)時,它的電平狀態(tài)由上拉電阻、下拉電阻確定。下表為它的功能描述:當(dāng)為0時,上拉電阻是允許的;反之,則上拉電阻是被禁止的。 </p><p> 到此,需要的寄存器就配置完成了,那么接下來介紹下LED在開發(fā)板上的電路原理圖。 </p><p> 第4章 課程設(shè)計過程</p><p><b> 4
24、.1 設(shè)計步驟</b></p><p> 1.連接好實驗環(huán)境,將仿真器的一端通過并口連接到PC機(jī),將仿真器的另一端通過JTAG先連接到開發(fā)板JTAG接口。</p><p> 2.將串口線一端接到PC機(jī),另一端接到S3C2440的UART0接口;打開串口超級終端,設(shè)置串口屬性為COM1,串口波特率(Baudrout)為115200,校驗位無,數(shù)據(jù)位為8,停止位為1,檢查連接是
25、否可靠,可靠后,接入電源線,給系統(tǒng)上電,同時按住空格鍵,進(jìn)入VIVI狀態(tài)。</p><p> 3.打開ADS codeWarrior,在ADS codeWarrior中創(chuàng)建工程編寫代碼,并對工程進(jìn)行編譯。</p><p> 4.使用H-JTAG進(jìn)行調(diào)試。</p><p> 5.打開ARM的開發(fā)環(huán)境AXD Debugger,在AXD Debugger中加載可執(zhí)行
26、映像文件LED_TEXT.axf。</p><p> 6.在ADS調(diào)試環(huán)境處下,全速運行映像文件,觀察LED燈LED1、LED2、LED3、LED4的閃亮情況—輪流閃爍。</p><p><b> 4.2部分原理圖</b></p><p><b> 圖a</b></p><p><b&
27、gt; 圖b</b></p><p> 上圖a、b是實驗的部分原理圖,可以看出我們通過GPB5、GPB6、GPB7、GPB8來分別控制LED1、LED2、LED3、LED4。</p><p><b> 4.3源程序:</b></p><p><b> 1.main.c</b></p>&l
28、t;p> #define rGPBCON (*(volatile unsigned *))0x56000010) //prot B contorl</p><p> #define rGPBDAT (*(volatile unsigned *))0x56000010) //prot B data</p><p> #define rGPBUP
29、 (*(volatile unsigned *))0x56000010) //pull-up control B</p><p> void xmain(void)</p><p><b> {</b></p><p> ChangeClockDivider(3,1); //設(shè)置時鐘分頻比1:3:6</p>&l
30、t;p> ChangeMPllValue(127,2,1); //設(shè)置主時鐘頻405MHZ</p><p> Port_Init(); //端口初始化</p><p> Isr_Init(); //中斷初始化</p><p> Uart_Init(0, 115200); //串口初始化</p><p> Uart_Se
31、lect(0);</p><p> Uart_Printf("the main is running\n");//向超級終端打印"the main is running"</p><p> rGPBCON = rGPBCON & (~(0xf<<10)) |( 1<< 10) |(1 << 12);&l
32、t;/p><p> //將GPB5[11:10] 兩位設(shè)置為01---即output狀態(tài),GPB6[13:12] 兩位設(shè)置為01---即output狀態(tài)</p><p> rGPBCON = rGPBCON & (~(0xf<<14)) |( 1<< 14) |(1 << 16);</p><p> //將GPB7[15
33、:14] 兩位設(shè)置為01---即output狀態(tài),GPB8[17:16] 兩位設(shè)置為01---即output狀態(tài)</p><p> rGPBUP = rGPBUP&(~(0xF<<5))|(0xF<<5);</p><p> //將GPB5、GPB6、GPB7、GPB8上拉電阻設(shè)置為disabled</p><p><b&g
34、t; while(1)</b></p><p><b> {</b></p><p> rGPBDAT = (rGPBDAT|(0xF<<5))&(~(0x1<<5)); //點亮LED1</p><p> Delay(10000000);//延時</p><p>
35、rGPBDAT =( rGPBDAT|(0xF<<5))&(~(0x2<<5)); //點亮LED2</p><p> Delay(10000000);// 延時</p><p> rGPBDAT = (rGPBDAT|(0xF<<5))&(~(0x4<<5)); //點亮LED3</p><p>
36、 Delay(10000000);// 延時</p><p> rGPBDAT =(rGPBDAT|(0xF<<5))&(~(0x8<<5)); //點亮LED4</p><p> Delay(10000000);// 延時</p><p> rGPBDAT = (rGPBDAT|(0xF<<5))&(~(
37、0x4<<5)); //點亮LED3</p><p> Delay(10000000);// 延時</p><p> rGPBDAT =( rGPBDAT|(0xF<<5))&(~(0x2<<5)); //點亮LED2</p><p> Delay(10000000);// 延時</p><p&g
38、t; rGPBDAT = (rGPBDAT|(0xF<<5))&(~(0x1<<5)); //點亮LED1</p><p> Delay(10000000);// 延時</p><p><b> }</b></p><p><b> }</b></p><p>
39、; 2.2440lib.c</p><p> //===================================================================</p><p> // File Name : 2440lib.c</p><p> // Function : S3C2440 PLL,Uart, LED, Port I
40、nit</p><p> // Date :2011/22/28</p><p> // Version : 0.1</p><p> //===================================================================</p><p> #include "
41、;def.h"</p><p> #include "option.h"</p><p> #include "2440addr.h"</p><p> #include "2440lib.h"</p><p> #include "2440slib.h&
42、quot; </p><p> #include <stdarg.h></p><p> #include <string.h></p><p> #include <stdlib.h></p><p> #include <stdio.h></p><p>
43、#include <ctype.h></p><p> extern char Image$$RW$$Limit[];</p><p> void *mallocPt=Image$$RW$$Limit;</p><p> static int delayLoopCount;</p><p> void Delay(int
44、time) //延時函數(shù)</p><p><b> {</b></p><p> int i, adjust=0;</p><p> if(time==0)</p><p><b> {</b></p><p> time = 200;</p>
45、<p> adjust = 1;</p><p> delayLoopCount = 800;</p><p> rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); </p><p> rWTDAT = 0xffff; </p>
46、<p> rWTCON = ((PCLK/1000000-1)<<8)|(2<<3)|(1<<5); //Watch-dog timer start</p><p><b> }</b></p><p> for(;time>0;time--)</p><p> for(i=0;i
47、<delayLoopCount;i++);</p><p> if(adjust==1)</p><p><b> {</b></p><p> rWTCON = ((PCLK/1000000-1)<<8)|(2<<3); //Watch-dog timer stop</p><p>
48、 i = 0xffff - rWTCNT; //1count->64us, 200*800 cycle runtime = 64*i us</p><p> delayLoopCount = 16000000/(i*64);</p><p> //200*800:64*i=1*x:100 -> x=160000*100/(64*i) </p><p
49、><b> }</b></p><p><b> }</b></p><p> void Port_Init(void)//I/O口初始化</p><p><b> {</b></p><p> rGPACON = 0x7fffff; </p>&
50、lt;p> rGPBCON = 0x155555;</p><p> rGPBUP = 0x7ff; // The pull up function is disabled GPB[10:0]</p><p> rGPCCON = 0xaaaaaaaa; </p><p> rGPCUP = 0xffff; // The
51、 pull up function is disabled GPC[15:0] </p><p> rGPDCON = 0xaaaaaaaa; </p><p> rGPDUP = 0xffff; // The pull up function is disabled GPD[15:0]</p><p> rGPECON = 0xaaaa
52、aaaa; </p><p> rGPEUP = 0xffff; // The pull up function is disabled GPE[15:0]</p><p> rGPFCON = 0x55aa;</p><p> rGPFUP = 0xff; // The pull up function is disabled
53、 GPF[7:0]</p><p> rGPGCON = 0xff95ffba;</p><p> rGPGUP = 0xffff; // The pull up function is disabled GPG[15:0]</p><p> rGPHCON = 0x2afaaa;</p><p> rGPHUP = 0x7
54、ff; // The pull up function is disabled GPH[10:0]</p><p> rGPJDAT = (1<<12)|(0<<11);</p><p> rGPJCON = 0x016aaaa;</p><p> rGPJUP= ~((0<<12)|(1<<11));&
55、lt;/p><p> rGPJDAT = (0<<12)|(0<<11);</p><p> rGPJCON = 0x016aaaa;</p><p> rGPJUP= 0x1fff;//~((1<<12)|(1<<11));</p><p> rEXTINT0 = 0x22222222;
56、 // EINT[7:0]</p><p> rEXTINT1 = 0x22222222; // EINT[15:8]</p><p> rEXTINT2 = 0x22222222; // EINT[23:16]</p><p><b> }</b></p><p> static int wh
57、ichUart=1;</p><p> void Uart_Init(int pclk,int baud)//串口初始化,設(shè)置時鐘,波特率</p><p><b> {</b></p><p> if(pclk == 0)</p><p> pclk = PCLK;</p><p>
58、 rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable</p><p> rUFCON1 = 0x0; //UART channel 1 FIFO control register, FIFO disable</p><p> rUFCON2 = 0x0; //UART channel 2
59、FIFO control register, FIFO disable</p><p> rUMCON0 = 0x0; //UART chaneel 0 MODEM control register, AFC disable</p><p> rUMCON1 = 0x0; //UART chaneel 1 MODEM control register, AFC disable&
60、lt;/p><p><b> //UART0</b></p><p> rULCON0 = 0x3; //Line control register : Normal,No parity,1 stop,8 bit</p><p> rUCON0 = 0x245; // Control register</p><
61、p> rUBRDIV0 = 0x34;</p><p><b> //UART1</b></p><p> rULCON1 = 0x3;</p><p> rUCON1 = 0x245;</p><p> rUBRDIV1=( (int)(pclk/16./baud+0.5) -1 );</p&g
62、t;<p><b> //UART2</b></p><p> rULCON2 = 0x3;</p><p> rUCON2 = 0x245;</p><p> rUBRDIV2=( (int)(pclk/16./baud+0.5) -1 ); </p><p> Uart_TxEmpty
63、(whichUart);</p><p><b> }</b></p><p> void Uart_Select(int ch)</p><p><b> {</b></p><p> whichUart = ch;</p><p><b> }<
64、/b></p><p> void Uart_TxEmpty(int ch)</p><p><b> {</b></p><p><b> if(ch==0)</b></p><p> while(!(rUTRSTAT0 & 0x4)); //Wait until tx sh
65、ifter is empty.</p><p> else if(ch==1)</p><p> while(!(rUTRSTAT1 & 0x4)); //Wait until tx shifter is empty.</p><p> else if(ch==2)</p><p> while(!(rUTRSTAT2 &am
66、p; 0x4)); //Wait until tx shifter is empty.</p><p> } </p><p> void Uart_SendString(char *pt)</p><p><b> {</b></p><p> while(*pt)</p>
67、<p> Uart_SendByte(*pt++);</p><p><b> }</b></p><p> void Led_Display(int data) //LED顯示</p><p><b> {</b></p><p> rGPFDAT = (rGPFDAT
68、& ~(0xf<<4)) | ((~data & 0xf)<<4); </p><p><b> }</b></p><p> void Timer_Start(int divider) //0:16us,1:32us 2:64us 3:128us</p><p><b> {&l
69、t;/b></p><p> rWTCON = ((PCLK/1000000-1)<<8)|(divider<<3); //Watch-dog timer control register</p><p> rWTDAT = 0xffff; //Watch-dog timer data register</p><p> rW
70、TCNT = 0xffff; //Watch-dog count register</p><p> rWTCON = (rWTCON & ~(1<<5) & ~(1<<2)) |(1<<5);</p><p><b> }</b></p><p> int Timer_Stop(vo
71、id)</p><p><b> {</b></p><p> rWTCON = ((PCLK/1000000-1)<<8);</p><p> return (0xffff - rWTCNT);</p><p><b> }</b></p><p>
72、void ChangeMPllValue(int mdiv,int pdiv,int sdiv)</p><p><b> {</b></p><p> rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;</p><p><b> }</b></p>
73、<p> void ChangeUPllValue(int mdiv,int pdiv,int sdiv)</p><p><b> {</b></p><p> rUPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;</p><p><b> }</b&
74、gt;</p><p> void Isr_Init(void)//中斷初始化</p><p><b> {</b></p><p> pISR_UNDEF = (unsigned)HaltUndef;</p><p> pISR_SWI = (unsigned)HaltSwi;</p>&
75、lt;p> pISR_PABORT = (unsigned)HaltPabort;</p><p> pISR_DABORT = (unsigned)HaltDabort;</p><p> rINTMOD = 0x0; //All=IRQ mode</p><p> rINTMSK = BIT_ALLMSK; //A
76、ll interrupt is masked.</p><p> rINTSUBMSK = BIT_SUB_ALLMSK; </p><p><b> }</b></p><p> 4.4 編譯調(diào)試結(jié)果</p><p> 第5章 課程設(shè)計心得</p><p> 通過本次課程設(shè)計,
77、使我對S3C2440體系結(jié)構(gòu)理解更加深刻,以及對相應(yīng)的寄存器操作更熟悉。</p><p> 通過這次課程設(shè)計,加強了我動手、思考和解決問題的能力。在設(shè)計過程中,經(jīng)常會遇到這樣那樣的情況,就是心里想老著這樣的程序設(shè)計方法可以行得通,但實際進(jìn)入編譯,總是有這樣那樣的問題,因此耗費在這上面的時間用去很多。</p><p> 做課程設(shè)計同時也是對課本知識的鞏固和加強,由于課本上的知識太多,平時
78、課間的學(xué)習(xí)并不能很好的理解和運用在實踐中,所以在這次課程設(shè)計過程中,我了解了很多在平時上課沒怎么弄明白的知識,對于其在ARM9中的使用有了更多的認(rèn)識。</p><p> 平時看課本時,有時問題老是弄不懂,做完課程設(shè)計,那些問題就迎刃而解了。而且還可以記住很多東西。比如一些寄存器的功能,平時看課本,這次看了,下次就忘了,通過動手實踐讓我對 本次課程設(shè)計用到的寄存器映象深刻。認(rèn)識來源于實踐,實踐是認(rèn)識的動力和最終目
79、的,實踐是檢驗真理的唯一標(biāo)準(zhǔn)。所以這個課程設(shè)計對我的作用是非常大的。</p><p> 通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。</p><p> 此次課程設(shè)計,學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨立思考解決問題,出現(xiàn)差錯的隨機(jī)應(yīng)
80、變,和與人合作共同提高,都受益非淺,今后的制作應(yīng)該更輕松,自己也都能扛的起并高質(zhì)量的完成項目。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 邱鐵 ARM9嵌入式系統(tǒng)結(jié)構(gòu)與編程 北京:清華大學(xué)出版社,2009-03-01</p><p> [2] 武俊鵬 基于ARM的嵌入式系統(tǒng)設(shè)計實驗與實踐教程 北京:清華大學(xué)出
81、版社,2011年9月1日</p><p> [3] 黃智偉,王彥 ARM9嵌入式系統(tǒng)設(shè)計基礎(chǔ) 北京:北京航空航天大學(xué)2008-8-1</p><p> [4] 愈輝 ARM嵌入式linux系統(tǒng)設(shè)計與開發(fā) 機(jī)械工業(yè)出版社 2010-5-1</p><p> [5]WayneWolf.嵌入式計算機(jī)系統(tǒng)設(shè)計原理.孫玉芳等譯.北京:機(jī)械工業(yè)出版社,2002</
82、p><p> [6] [美]Jonathan W.Valvano著.嵌入式微計算機(jī)系統(tǒng)實時接口技術(shù).李曦等譯.北京:機(jī)械工業(yè)出版社,2003</p><p> [7] 田澤編著.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程.北京:北京航空大學(xué)出版社,2005</p><p> [8] 田澤編著.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程(第2版).北京:北京航空大學(xué)出版社,2005</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計---led流水燈
- 流水燈課程設(shè)計
- 單片機(jī)課程設(shè)計led流水燈設(shè)計報告
- 流水燈課程設(shè)計
- 流水燈課程設(shè)計
- 流水燈課程設(shè)計
- arm9報告基于arm9的數(shù)據(jù)采集應(yīng)用程序設(shè)計
- 花樣流水燈課程設(shè)計
- plc課程設(shè)計--流水燈
- 流水燈課程設(shè)計告
- 課程設(shè)計-基于單片機(jī)的led流水燈設(shè)計
- 流水燈課程設(shè)計 (2)
- 花樣流水燈課程設(shè)計
- 課程設(shè)計---流水燈設(shè)計報告
- eda課程設(shè)計----流水燈設(shè)計
- 流水燈課程設(shè)計--流水彩燈控制器
- 基于plc控制的流水燈課程設(shè)計
- 基于arm9的電子琴程序設(shè)計
- 基于arm9的dma控制器驅(qū)動程序設(shè)計
- 簡易音樂流水燈課程設(shè)計
評論
0/150
提交評論