第一篇:ARM與嵌入式實(shí)驗(yàn)報(bào)告
ARM與嵌入式技術(shù)
實(shí)驗(yàn)報(bào)告
專(zhuān)業(yè)班級(jí):通信工程
姓名:**** 學(xué)號(hào):******
實(shí)驗(yàn)日期:2012年6月7日 指導(dǎo)老師:*****
一、實(shí)驗(yàn)?zāi)康?/p>
1.學(xué)習(xí)使用Embest IDE開(kāi)發(fā)環(huán)境及ARM 軟件模擬器;
2.掌握簡(jiǎn)單ARM 匯編指令,進(jìn)一步加強(qiáng)對(duì)嵌入式的熟悉和了解。
二、實(shí)驗(yàn)設(shè)備
硬件:PC 機(jī)
軟件:Embest IDE 開(kāi)發(fā)環(huán)境
三、實(shí)驗(yàn)內(nèi)容
例3:實(shí)現(xiàn)64位加法運(yùn)算,要求【R1:R0】+【R3:R2】,結(jié)果放回【R1:R0】中; 例2:編寫(xiě)程序?qū)2的高8位傳送到R3的低8位(不考慮R3的其它位); 例7:編寫(xiě)一段程序計(jì)算10!;
例8:串拷貝(R1指向源數(shù)據(jù)串的首地址,R0指向目的數(shù)據(jù)串的首地址)。
四、實(shí)驗(yàn)步驟
1)新建工程:
運(yùn)行Embest IDE 集成開(kāi)發(fā)環(huán)境,選擇菜單項(xiàng)File → New Workspace,如圖一,系統(tǒng)彈出一個(gè)對(duì)話(huà)框,鍵入文件名“沈”,如圖二,點(diǎn)擊OK 按鈕。將創(chuàng)建一個(gè)新工程,并同時(shí)創(chuàng)建一個(gè)與工程名相同的工作區(qū)。此時(shí)在工作區(qū)窗口將打開(kāi)該工作區(qū)和工程.。
2)建立源文件:
點(diǎn)擊菜單項(xiàng)File → New,如圖三,系統(tǒng)彈出一個(gè)新的文本編輯窗,輸入源文件代碼。編輯完后,保存文件“沈.s”后綴,如圖四。
3)添加源文件:
選擇菜單項(xiàng)Project → Add To Project → Files,在工程目錄下選擇剛才建立的源文件.s后綴文件,如圖五,圖六。
4)基本配置:
選擇菜單項(xiàng)Project → Settings,彈出工程設(shè)置對(duì)話(huà)框。在工程設(shè)置對(duì)話(huà)框中。① 選擇Processor 設(shè)置對(duì)話(huà)框,按照?qǐng)D七所示,進(jìn)行配置:
圖七
② 選擇Remote設(shè)置對(duì)話(huà)框,按照下圖八所示,進(jìn)行配置:
圖八 ③ 選擇最右邊一個(gè)進(jìn)行編譯,顯示如圖九,則編譯成功。
圖九
④ 選擇Project → Settings → Debug設(shè)置對(duì)話(huà)框,按照?qǐng)D十所示,進(jìn)行配置:
圖十 ⑤
選擇
5)選擇菜單項(xiàng)Debug →Remote Connect 進(jìn)行連接軟件仿真器,將存儲(chǔ)器地址改為0x1000,如圖十一,執(zhí)行Debug →Download 命令下載程序,并打開(kāi)寄存器窗口。打開(kāi)memory 窗口,按F10進(jìn)行單步跟蹤,觀察寄存器的數(shù)據(jù)變化并分析。最右邊一個(gè)進(jìn)行編譯,顯示如圖九,則編譯成功。
圖十一
五、各實(shí)驗(yàn)的參考程序及運(yùn)行結(jié)果
實(shí)驗(yàn)一:(例3)實(shí)現(xiàn)64位加法運(yùn)算,要求【R1:R0】+【R3:R2】,結(jié)果放回【R1:R0】中; 1.程序代碼如下:
.global _start
.text _start:
mov R0,#11
/*R0=11*/ mov R1,#22
/*R1=22*/ mov R2,#33
/*R2=33*/ mov R3,#44
/*R3=44*/ ADDS R0,R0,R2
/*R0等于低32位相加,并影響標(biāo)志位*/
ADC R1,R1,R3
/*R1等于高32位相加,并加上低位進(jìn)位*/ stop:
b stop.end
2.分析調(diào)試:
①download下載:
② 讀入數(shù)據(jù):
③ r0+r2→r0(低32位):
④ r1+r3→r1(帶進(jìn)位的加法):
實(shí)驗(yàn)二:(例2)編寫(xiě)程序?qū)2高8位傳送到R3的低8位(不考慮R3的其它位);
1.程序代碼如下:
.global _start _start: ldr r2,=0x23453401 ldr r3,=0xabcd1200 and r2,r2,#0xff000000 /*保留R2的高8位,屏蔽低24位*/ and r3,r3,#0xffffff00 /*保留R3的高24位,屏蔽低8位*/
orr r3,r3,r2,lsr #24
/*將R2的高8位傳送到R3的低8位*/ stop:
b stop.end
2.分析調(diào)試:
①download下載:
②保留r2的高8位,屏蔽低24位:
③保留r3的高24位,屏蔽低8位:
④將R2的高8位傳送到R3的低8位:
實(shí)驗(yàn)三:(例7)編寫(xiě)一段程序計(jì)算10!
1.程序代碼如下:
.global _start.text.equ num,10 _start: mov r0,#num mov r1,r0 s1: subs r1,r1,#1
/*把r1-1放入r1*/ mul r0,r1,r0
/*r0*r1放入r0*/ cmp r1,#1
/*比較R1與1的大小*/ beq stop
bne s1 stop: b stop.end
2.分析調(diào)試:
① download下載:
② 第一次執(zhí)行S1,r1=10-1=9,10*9=90,換成16進(jìn)制是5a。
③ 第二次執(zhí)行S1,r1=9-1=8,10*9*8=720,換成16進(jìn)制是2d0。
④ 依次執(zhí)行S1,到r1=1,停止,10*9*8??*1=3628800,換成16進(jìn)制是375f00。
實(shí)驗(yàn)四:(例8)串拷貝(R1指向源數(shù)據(jù)串首地址,R0指向目的數(shù)據(jù)串的首地址)。1.程序代碼如下:.global _start.text.EQU NUM,8 _start:
LDR R0,=srcstr
/*指向源數(shù)據(jù)串R0*/
LDR R1,=dststr
/*指向目標(biāo)數(shù)據(jù)串R1*/
mov R3,#NUM
/*R3=8*/
mov LR,PC
/*返回*/
B strcopy
/*調(diào)用串拷貝子程序*/ stop: b stop
strcopy:
LDRB R2,[R0],#1
/*裝載字節(jié)同時(shí)更新地址*/
STRB R2,[R1],#1
/*存儲(chǔ)字節(jié)同時(shí)更新地址*/
SUBS R3,R3,#1
CMP R3,#0
/*判斷是否結(jié)束*/
BNE strcopy
/*不是,則繼續(xù)*/
MOV PC,LR
/*返回*/.data
srcstr:.long 1,2,3,4,5,6,7,0
/*定義源數(shù)據(jù)串*/
dststr:.long 5,3,2,1,4,6,8,0
/*定義目的字符串*/
2.分析調(diào)試:
①單步跟蹤后的結(jié)果及存儲(chǔ)器的結(jié)果顯示:
②寄存器的結(jié)果顯示:
六、實(shí)驗(yàn)心得
今天在實(shí)驗(yàn)室里,學(xué)習(xí)使用Embest IDE開(kāi)發(fā)環(huán)境及ARM 軟件模擬器,掌握簡(jiǎn)單ARM 匯編指令,進(jìn)一步加強(qiáng)了對(duì)嵌入式的熟悉和了解。鄭老師在兢兢業(yè)業(yè)的向我們傳授實(shí)踐知識(shí)的同時(shí)也向我們提問(wèn)相關(guān)理論問(wèn)題,讓我們?cè)趯W(xué)習(xí)的過(guò)程加深對(duì)實(shí)踐和理論兩者之間的聯(lián)系,知道每一個(gè)步驟的發(fā)生的原因及產(chǎn)生相應(yīng)的結(jié)果,即對(duì)實(shí)驗(yàn)的來(lái)龍去脈有了更清楚的認(rèn)識(shí),為今后的學(xué)習(xí)打下了一定的基礎(chǔ)。相信在接下來(lái)的實(shí)驗(yàn)中,我們會(huì)在鄭老師的引導(dǎo)下,做起實(shí)驗(yàn)來(lái)更能得心應(yīng)手,輕車(chē)熟駕!
第二篇:嵌入式系統(tǒng)ARM實(shí)驗(yàn)報(bào)告
南京郵電大學(xué)通信與信息工程學(xué)院
實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)名稱(chēng):實(shí)驗(yàn)一基于ADS開(kāi)發(fā)環(huán)境的設(shè)計(jì)
實(shí)驗(yàn)二嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立 實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)
課程名稱(chēng)嵌入式系統(tǒng)B
班級(jí)學(xué)號(hào)B13010711 姓名馬俊民
開(kāi)課時(shí)間 2015/2016學(xué)年第1學(xué)期
實(shí)驗(yàn)一基于ADS開(kāi)發(fā)環(huán)境的程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
1、學(xué)習(xí)ADS開(kāi)發(fā)環(huán)境的使用;
2、學(xué)習(xí)和掌握ADS環(huán)境下的匯編語(yǔ)言及C語(yǔ)言程序設(shè)計(jì);
3、學(xué)習(xí)和掌握匯編語(yǔ)言及C語(yǔ)言的混合編程方法。
二、實(shí)驗(yàn)內(nèi)容
1、編寫(xiě)和調(diào)試匯編語(yǔ)言程序;
2、編寫(xiě)和調(diào)試C語(yǔ)言程序;
3、編寫(xiě)和調(diào)試匯編語(yǔ)言及C語(yǔ)言的混合程序;
4、編寫(xiě)程序測(cè)試多寄存器傳送指令的用法。
三、實(shí)驗(yàn)原理
ADS全稱(chēng)為ARM Developer Suite,是ARM公司推出的新一代ARM集成開(kāi)發(fā)工具。現(xiàn)在常用的ADS版本是ADS1.2,它取代了早期的ADS1.1和ADS1.0。
ADS用于無(wú)操作系統(tǒng)的ARM系統(tǒng)開(kāi)發(fā),是對(duì)裸機(jī)(可理解成一個(gè)高級(jí)單片機(jī))的開(kāi)發(fā)。ADS具有極佳的測(cè)試環(huán)境和良好的偵錯(cuò)功能,它可使硬件開(kāi)發(fā)工作者更深入地從底層去理解ARM處理器的工作原理和操作方法,為日后自行設(shè)計(jì)打基礎(chǔ),為BootLoader的編寫(xiě)和調(diào)試打基礎(chǔ)。
1.ADS軟件的組成
ADS由命令行開(kāi)發(fā)工具、ARM運(yùn)行時(shí)庫(kù)、GUI開(kāi)發(fā)環(huán)境(CodeWarrior和AXD)、實(shí)用程序、支持軟件等組成。
2.GUI開(kāi)發(fā)環(huán)境
ADS GUI開(kāi)發(fā)環(huán)境包含CodeWarrior和AXD兩種,其中Code Warrior是集成開(kāi)發(fā)工具,而AXD是調(diào)試工具。
使用匯編語(yǔ)言進(jìn)行編程簡(jiǎn)單、方便,適用于初始化硬件代碼、啟動(dòng)代碼等。匯編語(yǔ)言具有一些相同的基本特征:
1.一條指令一行。
2.使用標(biāo)號(hào)(label)給內(nèi)存單元提供名稱(chēng),從第一列開(kāi)始書(shū)寫(xiě)。3.指令必須從第二列或能區(qū)分標(biāo)號(hào)的地方開(kāi)始書(shū)寫(xiě)。4.注釋必須跟在指定的注釋字符后面,一直書(shū)寫(xiě)到行尾。
在ARM匯編程序中,每個(gè)段必須以AREA作為段的開(kāi)始,以碰到下一個(gè)AREA作為該段的結(jié)束,段名必須唯一。程序的開(kāi)始和結(jié)束需以ENTRY和END來(lái)標(biāo)識(shí)。嵌入式C語(yǔ)言設(shè)計(jì)是利用基本的C語(yǔ)言知識(shí),面向嵌入式工程實(shí)際應(yīng)用進(jìn)行程序設(shè)計(jì)。為了使單獨(dú)編譯的C語(yǔ)言程序和匯編程序之間能夠相互調(diào)用,必須為子程序之間的調(diào)用規(guī)定一定的規(guī)則。ATPCS就是ARM程序和Thumb程序中子程序調(diào)用的基本規(guī)則。
四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析
1.創(chuàng)建項(xiàng)目工程
在File菜單中選擇New命令,打開(kāi)一個(gè)新建工程對(duì)話(huà)框。在Project選項(xiàng)卡下,選擇ARM Executable Image, 然后在Project name文本框里輸入項(xiàng)目名稱(chēng),點(diǎn)擊確定。彈出工程窗口。
選擇File菜單中的New命令,選擇File標(biāo)簽頁(yè),在File name文本框中輸入要?jiǎng)?chuàng)建的文件名。匯編程序以.s結(jié)尾,c程序以.c結(jié)尾。在Location文本框中指定文件的存放位置,選中Add to Project,在Targets中選中DebugRel,單擊確定關(guān)閉窗口。
2.用匯編語(yǔ)言設(shè)計(jì)程序?qū)崿F(xiàn)10的階乘
AREA EXAMPLE, CODE, READONLY ENTRY start MOV R0, #10 MOV R1, #1 LOOP MUL R0, R0, R1 SUB R0, R0, 1 CMP R0, #1 BHI LOOP END 在這個(gè)程序中,我們首先對(duì)R0和R1賦值,將R0作為一個(gè)變量,而R1作為一個(gè)存貯階乘值的寄存器。在每進(jìn)行一次乘法之后,將R0減1。同時(shí)在做完減法后進(jìn)行判斷,如果此時(shí)R0大于1,則返回繼續(xù)乘法,否則結(jié)束程序,輸出結(jié)果。
3.用調(diào)用子程序的方法實(shí)現(xiàn)1!+2!+3!+?+10!,代碼如下: asmp.s
AREA JC, CODE, READONLY
EXPORT JCP
ENTRY JCP
ADD R3, R0, #1
MOV R2, #1
MOV R1, #1 LOOP MUL R0, R1, R2
MOV R1, R0
ADD R2, R2, #1
CMP R2, R3
BNE LOOP
NOP
NOP
MOV PC, LR
END
PROGC.c #include
int main(){ int res=0;int m=10;int i;for(i=1;i<=m;i++)
res=res+JCP(i);printf(“The result =%dn”,res);return 0;} 在這個(gè)程序中,主程序由c語(yǔ)言完成作求和,子程序由匯編語(yǔ)言寫(xiě)成作階乘。
5.實(shí)現(xiàn)字符串的逆序復(fù)制TEXT1=“HELLO”=>TEXT2=“OLLEH”
AREA invstring, CODE, READONLY start
ADR R1,TEXT1
ADR R2,TEXT2
MOV R3, #0 LOOP
LDRB R0,[R1], #1
ADD R3,R3,#1
CMP R0,#0
BNE LOOP
SUB R1,R1,#2
LOOP1
LDRB R0,[R1], #-1
STRB R0,[R2], #1
SUB R3,R3, #1
CMP R3,#1
BNE LOOP1
MOV R5,#&55
TEXT1
TEXT2 NOP =“HELLO”,0 ALIGN =“OELLH” END
五、實(shí)驗(yàn)小結(jié)
在這次實(shí)驗(yàn)中,學(xué)會(huì)了如何使用匯編程序進(jìn)行編程。對(duì)匯編程序編程一些基本的要求有了一定的了解,學(xué)習(xí)了C語(yǔ)言的語(yǔ)法和在其中調(diào)用匯編程序的方法。學(xué)會(huì)了利用CodeWarrior IDE開(kāi)發(fā)C和ARM匯編代碼。學(xué)會(huì)了在AXD中進(jìn)行代碼調(diào)試的方法和過(guò)程,對(duì)AXD的調(diào)試有初步的了解。,實(shí)驗(yàn)二嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握嵌入式Linux交叉開(kāi)發(fā)環(huán)境的建立方法
2、學(xué)習(xí)和掌握Linux常用命令
3、學(xué)習(xí)和掌握vi編輯器的使用
二、實(shí)驗(yàn)內(nèi)容
1、搭建嵌入式Linux交叉開(kāi)發(fā)環(huán)境
2、熟悉Linux的常用命令
3、熟悉vi編輯器的常用命令
三、實(shí)驗(yàn)原理
Linux系統(tǒng)是UNIX系統(tǒng)的分支,是UNIX的微機(jī)版。Linux具有異常豐富的驅(qū)動(dòng)程序資源,支持各種主流的硬件設(shè)備與技術(shù)。Linux包含了現(xiàn)代的UNIX操作系統(tǒng)的所有功能特性,這些功能包括多任務(wù)、虛擬內(nèi)存、虛擬文件系統(tǒng)、進(jìn)程間通信、對(duì)稱(chēng)所處理器、多用戶(hù)支持等。
Vi編輯器是所有UNIX和Linux下的標(biāo)準(zhǔn)編輯器。它包含3種工作模式。嵌入式系統(tǒng)是專(zhuān)用的計(jì)算機(jī)系統(tǒng),它對(duì)系統(tǒng)的功能、可靠性、成本、體積、功耗等有嚴(yán)格的要求。大部分嵌入式系統(tǒng)沒(méi)有大容量存儲(chǔ)設(shè)備,一般不能安裝大型開(kāi)發(fā)軟件,系統(tǒng)的開(kāi)發(fā)需要采用交叉開(kāi)發(fā)模式。
四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析
實(shí)驗(yàn)用的是UP-NetARM2410-S試驗(yàn)箱,里面配有三星的芯片S3c2410X。打開(kāi)電腦上VMWare軟件,在Windows系統(tǒng)下啟動(dòng)虛擬機(jī)里的Linux系統(tǒng)。接著需要
1.宿主機(jī)的環(huán)境搭建
下載并運(yùn)行VMWare,根據(jù)向?qū)?chuàng)建一臺(tái)新虛擬機(jī)并選擇Linux作為客戶(hù)操作系統(tǒng),再根據(jù)向?qū)О惭bRedHat Linux 9.0。
2.虛擬機(jī)中啟動(dòng)Linux操作系統(tǒng)
使用root登陸,用戶(hù)名為root,密碼為123456。之后對(duì)共享文件設(shè)置進(jìn)行調(diào)整:打開(kāi)settings界面,打開(kāi)shared folders功能,同時(shí)將路徑設(shè)置到有課前下載的軟件的目錄下。
3.開(kāi)發(fā)工具軟件的安裝(1)安裝gcc 打開(kāi)Linux后,打開(kāi)終端窗口,在共享的目錄下找到install.sh并運(yùn)行,命令如下: ls./ install.sh 安裝程序?qū)⒆詣?dòng)建立/arm2410s目錄,并將所有的開(kāi)發(fā)軟件包安裝到/arm2410s 目錄下,同時(shí)自動(dòng)配置編譯環(huán)境,建立合適的符號(hào)鏈接。安裝完成后在目錄/opt/host/armv4l/bin/下應(yīng)該能看到主編譯器。(2)配置PATH路徑
vi.bash.profile 將里面PATH變量改為PATH=$PATH:$HOME/bin:/opt/host/armv41/bin/;存盤(pán)后執(zhí)行
source.bash_profile 以后armv4l-unknown-linux-gcc將被自動(dòng)搜索到
4.宿主機(jī)上的開(kāi)發(fā)環(huán)境配置(1)配置IP地址
ifconfig eth0 192.168.0.121 命令配置了宿主機(jī)的IP地址。然后打開(kāi)網(wǎng)絡(luò)配置窗口,重新探測(cè)MAC地址。重新激活。(2)關(guān)閉防火墻
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“安全級(jí)別”→打開(kāi)“安全級(jí)別配置”窗口,選擇“無(wú)防火墻選項(xiàng)。”(3)配置NFS。
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“服務(wù)”,在“服務(wù)配置”窗口中勾選nfs,單擊“開(kāi)始”(4)NFS設(shè)置
單擊“Red”菜單→“系統(tǒng)設(shè)置”→“服務(wù)器設(shè)置”→“NFS服務(wù)器”,打開(kāi)“NFS服務(wù)器配置”窗口,設(shè)置NFS共享。
然后在NFS服務(wù)器中增加主機(jī)IP地址的鏈接許可和目錄。完成配置。
5.目標(biāo)機(jī)的信息輸出
Windows系統(tǒng)下,“開(kāi)始”→“所有程序”→“附件”→“通訊”→“超級(jí)終端”,新建一個(gè)通信終端。區(qū)號(hào)、電話(huà)號(hào)碼隨意輸入。設(shè)置每秒位數(shù)為“115200”,數(shù)據(jù)位為“8”,無(wú)奇偶校驗(yàn),停止位為“1”,無(wú)數(shù)據(jù)流控制。單擊“確定”。
6.程序的運(yùn)行
打開(kāi)超級(jí)終端,啟動(dòng)Linux,屏幕顯示:
[/mnt/yaffs] 在超級(jí)終端上執(zhí)行掛載命令:
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后可執(zhí)行程序。
五、實(shí)驗(yàn)小結(jié)
在這次實(shí)驗(yàn)中,學(xué)會(huì)建立Linux交叉開(kāi)發(fā)環(huán)境,學(xué)會(huì)了ls和vi,cd等常用的Linux命令,并掌握了Vi編輯器的使用方法。同時(shí)知道了如何在搭建失敗時(shí)尋找錯(cuò)誤進(jìn)行排錯(cuò)。
實(shí)驗(yàn)三嵌入式Linux環(huán)境下的程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
1、掌握嵌入式Linux環(huán)境下的程序設(shè)計(jì)方法
2、學(xué)會(huì)編寫(xiě)Makefile文件
二、實(shí)驗(yàn)內(nèi)容
1、熟悉嵌入式教學(xué)實(shí)驗(yàn)箱的使用
2、編寫(xiě)C程序和Makefile文件
3、編譯程序產(chǎn)生可執(zhí)行程序
4、完成主機(jī)的掛載和程序的執(zhí)行
三、實(shí)驗(yàn)原理
在嵌入式Linux環(huán)境下的程序設(shè)計(jì)方法有一下幾個(gè)步驟:
1.編寫(xiě)源程序
2.編寫(xiě)Makefile文件 3.編譯程序
4.運(yùn)行和調(diào)試程序
5.將生產(chǎn)的可執(zhí)行文件加入文件系統(tǒng)。
前三個(gè)步驟在宿主機(jī)上完成,后面的步驟在目標(biāo)機(jī)上完成。
四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析
1.建立工作目錄
mkdir hello cd hello
2.編寫(xiě)源程序
用vi編輯器編輯Hello.c文件
vi Hello.c 在Vi中輸入源程序如下:
#include
printf(“hello world n”);}
3.編寫(xiě)Makefile文件
vi Makefile 在vi中編輯Makefile文件如下:
CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS += LDFLAGS+=-static all: $(EXEC)$(EXEC):(OBJS)$(CC)$(LDFLAGS)–o $@ $(OBJS)clean:
-rm –f $(EXEC)*.elf *.gdb *.o
4.編譯程序
在hello目錄下運(yùn)行“make”來(lái)編譯程序。
make clean
make 編譯成功后,生成可執(zhí)行文件Hello.o。
5.下載調(diào)試
在宿主機(jī)上啟動(dòng)nfs服務(wù),并將/arms2410s設(shè)置為共享目錄。接下來(lái)啟動(dòng)超級(jí)終端,建立通訊,掛載。
[/mnt] mount –t nfs 192.168.0.121:/arm2410s /mnt/nfs 掛載成功后,進(jìn)入/mnt/nfs,再進(jìn)入/mnt/nfs/hello,直接運(yùn)行剛剛編譯生成的可執(zhí)行文件Hello.o,查看運(yùn)行結(jié)果
cd hello./hello 可以看見(jiàn)“Hello world”
只需要掛載一次便可,只要實(shí)驗(yàn)箱沒(méi)有重啟,就可以一直保持連接。反復(fù)修改、編譯、調(diào)試,直至程序調(diào)試通過(guò)。
6.可執(zhí)行文件加入文件系統(tǒng)
程序調(diào)試通過(guò)后,可以把可執(zhí)行文件拖放到usr/bin目錄下,然后使用mkcramfs制作工具生成新的文件系統(tǒng)。當(dāng)系統(tǒng)啟動(dòng)后,就可以在相應(yīng)目錄下執(zhí)行可執(zhí)行程序hello.五、實(shí)驗(yàn)小結(jié) 在這次實(shí)驗(yàn)中,學(xué)會(huì)了在嵌入式Linux環(huán)境下設(shè)計(jì)程序。同時(shí)知道了如何對(duì)目標(biāo)機(jī)進(jìn)行掛載。以及如何在發(fā)現(xiàn)掛載不成功尋找錯(cuò)誤進(jìn)行修改。另外在編譯文件時(shí)需要注意的也都有所了解。
實(shí)驗(yàn)四多線程程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?、2、二、實(shí)驗(yàn)內(nèi)容1、2、3、4、三、實(shí)驗(yàn)原理
四、實(shí)驗(yàn)過(guò)程與關(guān)鍵代碼分析
五、實(shí)驗(yàn)小結(jié)
3+
第三篇:嵌入式ARM鍵盤(pán)控制LED燈實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)六 鍵盤(pán)控制LED燈實(shí)驗(yàn) 實(shí)驗(yàn)?zāi)康?/p>
(1)通過(guò)實(shí)驗(yàn)掌握中斷式鍵盤(pán)控制與設(shè)計(jì)方法;(2)熟練編寫(xiě)S3C2410中斷服務(wù)程序。實(shí)驗(yàn)設(shè)備
(1)S3C2410嵌入式開(kāi)發(fā)板,JTAG仿真器。
(2)軟件:PC機(jī)操作系統(tǒng)Windows XP,ADS1.2集成開(kāi)發(fā)環(huán)境,仿真器驅(qū)動(dòng)程序,超級(jí)終端通訊程序。實(shí)驗(yàn)內(nèi)容
編寫(xiě)中斷處理程序,處理一個(gè)鍵盤(pán)中斷,并在串口打印中斷及按鍵顯示信息。實(shí)驗(yàn)步驟
(1)參照模板工程,新建一個(gè)工程keypad,添加相應(yīng)的文件,并修改keypad的工程設(shè)置;
(2)創(chuàng)建keypad.c并加入到工程keypad中;(3)編寫(xiě)鍵盤(pán)中斷程序; 參考代碼如下: ①串口初始化程序
void uart_init()/* UART串口初始化 */ {
} GPHCON |= 0xa0;GPHUP = 0x0;ULCON0
//GPH2,GPH3 used as TXD0,RXD0
//GPH2,GPH3內(nèi)部上拉
//8N1
= 0x03;UCON0 = 0x05;UFCON0 = 0x00;
//查詢(xún)方式為輪詢(xún)或中斷;時(shí)鐘選擇為PCLK
//不使用FIFO //不使用流控 UMCON0 = 0x00;UBRDIV0 = 26;
//波特率為57600,PCLK=12Mhz ②發(fā)送數(shù)據(jù)
while(!(UTRSTAT0 & TXD0READY));UTXH0 = c;③接收數(shù)據(jù)
while(!(UTRSTAT0 & RXD0READY));return URXH0;④打印數(shù)據(jù)
int i = 0;
while(str[i]){ } return i;putc((unsigned char)str[i++]);⑤按鍵初始化
int key_init()/* 按鍵初始化 */ {
} ⑥中斷初始化
void irq_init()/* 中斷初始化 */ {
}(5)編譯keypad;
(6)運(yùn)行超級(jí)終端,選擇正確的串口號(hào),并將串口設(shè)置位:波特率(115200)、奇偶校驗(yàn)(None)、數(shù)據(jù)位數(shù)(8)和停止位數(shù)(1),無(wú)流控,打開(kāi)串口; INTMSK &= ~(3<<2);printk(“中斷初始化OKrn”);GPFCON = 0x55aa;GPFUP = 0xff;
printk(“按鍵初始化OKrn”);return 0;(7)運(yùn)行程序,在超級(jí)終端中輸入的數(shù)據(jù)將回顯到超級(jí)終端上,結(jié)果如圖5.4所示:
圖6.1 初始化運(yùn)行結(jié)果
圖6.2 main運(yùn)行結(jié)果 實(shí)驗(yàn)總結(jié)
通過(guò)這次實(shí)驗(yàn)我鞏固了上次實(shí)驗(yàn)的串口的使用方法,串口初始化、發(fā)送數(shù)據(jù)和接收數(shù)據(jù),同時(shí)也熟悉了中斷的處理過(guò)程,即保護(hù)現(xiàn)場(chǎng)、中斷處理、恢復(fù)現(xiàn)場(chǎng)并返回。
在實(shí)驗(yàn)時(shí)花費(fèi)了很多的時(shí)間都沒(méi)有按照老師的要求將代碼修改好,主要是因?yàn)閷?duì)代碼的不熟悉和不能很好的靈活運(yùn)用,最后對(duì)老師修改的代碼仔細(xì)的看了,其實(shí)很簡(jiǎn)單。
第四篇:實(shí)習(xí)總結(jié)-嵌入式ARM
實(shí)訓(xùn)總結(jié)
班級(jí) 卓越1301姓名***
通過(guò)這段時(shí)間的學(xué)習(xí)使我學(xué)到了很多知識(shí),并且了解到ARM的應(yīng)用以及對(duì)開(kāi)發(fā)板的應(yīng)用,為以后的學(xué)習(xí)奠定了一定的基礎(chǔ)。
嵌入式系統(tǒng)一般定義為以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗和應(yīng)用環(huán)境有特殊要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。是將應(yīng)用程序、操作系統(tǒng)和計(jì)算機(jī)硬件集成在一起的系統(tǒng)這是從技術(shù)角度。從系統(tǒng)角度上是設(shè)計(jì)完成復(fù)雜功能的硬件和軟件,并使其緊密耦合在一起的計(jì)算機(jī)系統(tǒng)。
廣義上講,凡是帶有微處理器的專(zhuān)用軟硬件系統(tǒng)都可稱(chēng)為嵌入式系統(tǒng)。如各類(lèi)單片機(jī)和DSP系統(tǒng)。這些系統(tǒng)在完成較為單一的專(zhuān)業(yè)功能時(shí)具有簡(jiǎn)潔高效的特點(diǎn)。但由于他們沒(méi)有操作系統(tǒng),管理系統(tǒng)硬件核軟件的能力有限,在實(shí)現(xiàn)復(fù)雜多任務(wù)功能時(shí),往往困難重重,甚至無(wú)法實(shí)現(xiàn)。從狹義上講,我們更加強(qiáng)調(diào)那些使用嵌入式微處理器構(gòu)成獨(dú)立系統(tǒng),具有自己操作系統(tǒng),具有特定功能,用于特定場(chǎng)合的嵌入式系統(tǒng)。
嵌入式的應(yīng)用也比較廣泛涉及軍事國(guó)防、工業(yè)控制、消費(fèi)電子和網(wǎng)絡(luò)。在家用方面更是數(shù)字電視、信息家電、智能玩具、手持通訊、存儲(chǔ)設(shè)備的核心。
在ARM指令集中了解到ARM的尋址方式以及它的的特性,具有高效、快速的特點(diǎn),還有Thumb指令集具有靈活、小巧的特點(diǎn)。
在這次實(shí)訓(xùn)中做了兩個(gè)項(xiàng)目,一個(gè)是LED燈,實(shí)現(xiàn)LED燈的點(diǎn)亮是比較簡(jiǎn)單的,通過(guò)查找手冊(cè)可以很快的了解到要使用的寄存器和方法,另一個(gè)項(xiàng)目是DS18B20這個(gè)比較復(fù)雜,除了要掌握對(duì)寄存器的使用,還要對(duì)了解對(duì)串口的初始化,讀寫(xiě)字節(jié)等等。
感謝這次實(shí)訓(xùn),通過(guò)這次的實(shí)訓(xùn)項(xiàng)目,使我大體了解制作項(xiàng)目的步驟,了解了嵌入式技術(shù)的掌握是需要一個(gè)過(guò)程的。實(shí)事求是的說(shuō),嵌入式技術(shù)的全面掌握是有相當(dāng)難度的,通過(guò)積累和動(dòng)手總會(huì)有收獲的,從實(shí)驗(yàn)中也明白了一個(gè)大的項(xiàng)目并不是一個(gè)人可以完成的,團(tuán)隊(duì)協(xié)作很重要。
姓名:***
年級(jí):卓越1301
2014-7-5
第五篇:嵌入式實(shí)驗(yàn)報(bào)告
目錄
實(shí)驗(yàn)一 跑馬燈實(shí)驗(yàn).........................................................................1 實(shí)驗(yàn)二 按鍵輸入實(shí)驗(yàn).....................................................................3 實(shí)驗(yàn)三 串口實(shí)驗(yàn).............................................................................5 實(shí)驗(yàn)四 外部中斷實(shí)驗(yàn).....................................................................8 實(shí)驗(yàn)五 獨(dú)立看門(mén)狗實(shí)驗(yàn)................................................................11 實(shí)驗(yàn)七 定時(shí)器中斷實(shí)驗(yàn)................................................................13 實(shí)驗(yàn)十三 ADC實(shí)驗(yàn)........................................................................15 實(shí)驗(yàn)十五 DMA實(shí)驗(yàn)........................................................................17 實(shí)驗(yàn)十六 I2C實(shí)驗(yàn)........................................................................21 實(shí)驗(yàn)十七 SPI實(shí)驗(yàn)........................................................................24 實(shí)驗(yàn)二十一 紅外遙控實(shí)驗(yàn)............................................................27 實(shí)驗(yàn)二十二 DS18B20實(shí)驗(yàn).............................................................30
實(shí)驗(yàn)一 跑馬燈實(shí)驗(yàn)
一.實(shí)驗(yàn)簡(jiǎn)介
我的第一個(gè)實(shí)驗(yàn),跑馬燈實(shí)驗(yàn)。
二.實(shí)驗(yàn)?zāi)康?/p>
掌握STM32開(kāi)發(fā)環(huán)境,掌握從無(wú)到有的構(gòu)建工程。
三.實(shí)驗(yàn)內(nèi)容
熟悉MDK KEIL開(kāi)發(fā)環(huán)境,構(gòu)建基于固件庫(kù)的工程,編寫(xiě)代碼實(shí)現(xiàn)跑馬燈工程。通過(guò)ISP下載代碼到實(shí)驗(yàn)板,查看運(yùn)行結(jié)果。使用JLINK下載代碼到目標(biāo)板,查看運(yùn)行結(jié)果,使用JLINK在線調(diào)試。
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。
五.實(shí)驗(yàn)步驟
1.熟悉MDK KEIL開(kāi)發(fā)環(huán)境 2.熟悉串口編程軟件ISP 3.查看固件庫(kù)結(jié)構(gòu)和文件
4.建立工程目錄,復(fù)制庫(kù)文件 5.建立和配置工程 6.編寫(xiě)代碼 7.編譯代碼
8.使用ISP下載到實(shí)驗(yàn)板 9.測(cè)試運(yùn)行結(jié)果
10.使用JLINK下載到實(shí)驗(yàn)板 11.單步調(diào)試
12.記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
兩個(gè)燈LED0與LED1實(shí)現(xiàn)交替閃爍的類(lèi)跑馬燈效果,每300ms閃爍一次。
七.實(shí)驗(yàn)總結(jié)
通過(guò)本次次實(shí)驗(yàn)我了解了STM32開(kāi)發(fā)板的基本使用,初次接觸這個(gè)開(kāi)發(fā)板和MDK KEILC軟件,對(duì)軟件操作不太了解,通過(guò)這次實(shí)驗(yàn)了解并熟練地使用MDK KEIL軟件,用這個(gè)軟件來(lái)編程和完成一些功能的實(shí)現(xiàn)。作為 STM32 的入門(mén)第一個(gè)例子,詳細(xì)介紹了STM32 的IO口操作,同時(shí)鞏固了前面的學(xué)習(xí),并進(jìn)一步介紹了MDK的軟件仿真功能。
實(shí)驗(yàn)二 按鍵輸入實(shí)驗(yàn)
一.實(shí)驗(yàn)簡(jiǎn)介
在實(shí)驗(yàn)一的基礎(chǔ)上,使用按鍵控制流水燈速度,及使用按鍵控制流水燈流水方向。
二.實(shí)驗(yàn)?zāi)康?/p>
熟練使用庫(kù)函數(shù)操作GPIO,掌握中斷配置和中斷服務(wù)程序編寫(xiě)方法,掌握通過(guò)全局變量在中斷服務(wù)程序和主程序間通信的方法。
三.實(shí)驗(yàn)內(nèi)容
實(shí)現(xiàn)初始化GPIO,并配置中斷,在中斷服務(wù)程序中通過(guò)修改全局變量,達(dá)到控制流水燈速度及方向。
使用JLINK下載代碼到目標(biāo)板,查看運(yùn)行結(jié)果,使用JLINK在線調(diào)試。
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。
五.實(shí)驗(yàn)步驟
1在實(shí)驗(yàn)1代碼的基礎(chǔ)上,編寫(xiě)中斷初始化代碼
2在主程序中聲明全局變量,用于和中斷服務(wù)程序通信,編寫(xiě)完成主程序 3編寫(xiě)中斷服務(wù)程序
4編譯代碼,使用JLINK下載到實(shí)驗(yàn)板 5.單步調(diào)試
6記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
我們將通過(guò)MiniSTM32 板上載有的3個(gè)按鈕,來(lái)控制板上的2個(gè)LED,其中KEY0控制LED0,按一次亮,再按一次,就滅。KEY1 控制LED1,效果同KEY0。KEY_2(KEY_UP),同時(shí)控制LED0 和LED1,按一次,他們的狀態(tài)就翻轉(zhuǎn)一次。
七.實(shí)驗(yàn)總結(jié)
通過(guò)本次實(shí)驗(yàn),我學(xué)會(huì)了如何使用STM32 的IO 口作為輸入用。TM32 的IO 口做輸入使用的時(shí)候,是通過(guò)讀取IDR 的內(nèi)容來(lái)讀取IO 口的狀態(tài)的。這里需要注意的是 KEY0 和KEY1 是低電平有效的,而WK_UP 是高電平有效的,而且要確認(rèn)WK_UP 按鈕與DS18B20 的連接是否已經(jīng)斷開(kāi),要先斷開(kāi),否則DS18B20 會(huì)干擾WK_UP按鍵!并且KEY0 和KEY1 連接在與JTAG 相關(guān)的IO 口上,所以在軟件編寫(xiě)的時(shí)候要先禁用JTAG 功能,才能把這兩個(gè)IO 口當(dāng)成普通IO 口使用。
實(shí)驗(yàn)三 串口實(shí)驗(yàn)
一.實(shí)驗(yàn)簡(jiǎn)介
編寫(xiě)代碼實(shí)現(xiàn)串口發(fā)送和接收,將通過(guò)串口發(fā)送來(lái)的數(shù)據(jù)回送回去。
二.實(shí)驗(yàn)?zāi)康?/p>
掌握STM32基本串口編程,進(jìn)一步學(xué)習(xí)中斷處理。
三.實(shí)驗(yàn)內(nèi)容
編寫(xiě)主程序,初始化串口1,設(shè)置波特率為9600,無(wú)校驗(yàn),數(shù)據(jù)位8位,停止位1位。編寫(xiě)中斷服務(wù)程序代碼實(shí)現(xiàn)將發(fā)送過(guò)來(lái)的數(shù)據(jù)回送。
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。
軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。
五.實(shí)驗(yàn)步驟
1編寫(xiě)串口初始化代碼
2編寫(xiě)中斷服務(wù)程序代碼
3編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
把代碼下載到 MiniSTM32 開(kāi)發(fā)板,可以看到板子上的LED0 開(kāi)始閃爍,說(shuō)明程序已經(jīng)在跑了。接著我們打開(kāi)串口調(diào)試助手,看到如下信息:
證明串口數(shù)據(jù)發(fā)送沒(méi)問(wèn)題。接著,我們?cè)诎l(fā)送區(qū)輸入上面的文字,輸入完后按回車(chē)鍵。然后單擊發(fā)送,可以得到如下結(jié)果:
七.實(shí)驗(yàn)總結(jié)
通過(guò)本次實(shí)驗(yàn),我進(jìn)一步了解了串口的使用,學(xué)會(huì)了通過(guò)串口發(fā)送和接收數(shù)據(jù),將通過(guò)串口發(fā)送來(lái)的數(shù)據(jù)回送回去。該實(shí)驗(yàn)的硬件配置不同于前兩個(gè)實(shí)驗(yàn),串口 1 與USB 串口默認(rèn)是分開(kāi)的,并沒(méi)有在PCB上連接在一起,需要通過(guò)跳線帽來(lái)連接一下。這里我們把P4 的RXD 和TXD 用跳線帽與P3 的PA9 和PA10 連接起來(lái)。
實(shí)驗(yàn)四 外部中斷實(shí)驗(yàn)
一.實(shí)驗(yàn)簡(jiǎn)介
STM32 的 IO 口在本章第一節(jié)有詳細(xì)介紹,而外部中斷在第二章也有詳細(xì)的闡述。這里我們將介紹如何將這兩者結(jié)合起來(lái),實(shí)現(xiàn)外部中斷輸入。
二.實(shí)驗(yàn)?zāi)康?/p>
進(jìn)一步掌握串口編程,進(jìn)一步學(xué)習(xí)外部中斷編程,提高編程能力。
三.實(shí)驗(yàn)內(nèi)容
初始化IO口的輸入,開(kāi)啟復(fù)用時(shí)鐘,設(shè)置IO與中斷的映射關(guān)系,從而開(kāi)啟與IO口相對(duì)應(yīng)的線上中斷事件,設(shè)置觸發(fā)條件。配置中斷分組(NVIC),并使能中斷,編寫(xiě)中斷服務(wù)函數(shù)。
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。
軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。
五.實(shí)驗(yàn)步驟
1.2.3.4.編寫(xiě)中斷服務(wù)程序代碼 使用ISP下載到實(shí)驗(yàn)板 測(cè)試運(yùn)行結(jié)果
記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
打開(kāi)串口助手。
七.實(shí)驗(yàn)總結(jié)
首先需要將IO設(shè)置為中斷輸入口: 1)初始化 IO 口為輸入。
2)開(kāi)啟 IO 口復(fù)用時(shí)鐘,設(shè)置 IO 口與中斷線的映射關(guān)系。
3)開(kāi)啟與該 IO口相對(duì)的線上中斷/事件,設(shè)置觸發(fā)條件。
4)配置中斷分組(NVIC),并使能中斷。
5)編寫(xiě)中斷服務(wù)函數(shù)。
這一節(jié),使用的是中斷來(lái)檢測(cè)按鍵,通過(guò) WK_UP 按鍵實(shí)現(xiàn)按一次 LED0 和 LED 1 同時(shí)翻轉(zhuǎn),按 KEY0 翻轉(zhuǎn) LED0,按 KEY1 翻轉(zhuǎn) LED1。
試驗(yàn)中外部中斷函數(shù)不能進(jìn)入的原因分析 : 1)GPIO或者AFIO的時(shí)鐘沒(méi)有開(kāi)啟。2)GPIO和配置的中斷線路不匹配。3)中斷觸發(fā)方式和實(shí)際不相符合。
4)中斷處理函數(shù)用庫(kù)函數(shù)時(shí),寫(xiě)錯(cuò),經(jīng)??赡艹霈F(xiàn)數(shù)字和字母之間沒(méi)有下劃線。5)外部中斷是沿觸發(fā),有可能不能檢測(cè)到沿,比如 中斷線是低電平(浮空輸入),觸發(fā)是下降沿觸發(fā),可能會(huì)出現(xiàn)一直是低電平,高電平的時(shí)候是一樣的情況,電平持續(xù)為高電平。
6)沒(méi)有用軟件中斷來(lái)觸發(fā)外部中斷,調(diào)用函數(shù)EXTI_GenerateSWInterrupt;,因?yàn)檐浖袛嘞扔谶呇刂袛嗵幚怼?/p>
實(shí)驗(yàn)五 獨(dú)立看門(mén)狗實(shí)驗(yàn)
一. 實(shí)驗(yàn)簡(jiǎn)介
獨(dú)立看門(mén)狗(IWDG)由專(zhuān)用的低速時(shí)鐘(LSI)驅(qū)動(dòng),即使主時(shí)鐘發(fā)生故障它也仍然有效。窗口看門(mén)狗由從APB1時(shí)鐘分頻后得到的時(shí)鐘驅(qū)動(dòng),通過(guò)可配置的時(shí)間窗口來(lái)檢測(cè)應(yīng)用程序非正常的過(guò)遲或過(guò)早的操作。
二.實(shí)驗(yàn)?zāi)康?/p>
通過(guò)編程,編寫(xiě)一個(gè)獨(dú)立看門(mén)狗驅(qū)動(dòng)程序
三.實(shí)驗(yàn)內(nèi)容
啟動(dòng) STM32 的獨(dú)立看門(mén)狗,從而使能看門(mén)狗,在程序里面必須間隔一定時(shí)間喂狗,否則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),我們本章將通過(guò)一個(gè) LED 燈來(lái)指示程序是否重啟,來(lái)驗(yàn)證 STM32 的獨(dú)立看門(mén)狗。
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。
軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。
五.實(shí)驗(yàn)步驟
1.2.3.4.參考教材獨(dú)立看門(mén)狗部分,編寫(xiě)?yīng)毩⒖撮T(mén)狗驅(qū)動(dòng)程序。建立和配置工程 編寫(xiě)代碼
使用ISP下載到實(shí)驗(yàn)板
記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
在配置看門(mén)狗后,看到LED0 不停的閃爍,如果WK_UP 按鍵按下,就喂狗,只要WK_UP 不停的按,看門(mén)狗就一直不會(huì)產(chǎn)生復(fù)位,保持LED0 的常亮,一旦超過(guò)看門(mén)狗定溢出時(shí)間(Tout)還沒(méi)按,那么將會(huì)導(dǎo)致程序重啟,這將導(dǎo)致LED0 熄滅一次。
七.實(shí)驗(yàn)總結(jié)
通過(guò)本次實(shí)驗(yàn),我掌握了啟動(dòng)獨(dú)立看門(mén)狗的步驟: 1)向 IWDG_KR 寫(xiě)入 0X5555。2)向 IWDG_KR 寫(xiě)入 0XAAAA。3)向 IWDG_KR 寫(xiě)入 0XCCCC。
通過(guò)上面 3個(gè)步驟,啟動(dòng) STM32 的看門(mén)狗,從而使能看門(mén)狗,在程序里面就必須間隔一定時(shí)間喂狗,否則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),本章通過(guò)一個(gè)LED 燈來(lái)指示程序是否重啟,來(lái)驗(yàn)證 STM32 的獨(dú)立看門(mén)狗。在配置看門(mén)狗后,LED0 將常亮,如果 WK_UP 按鍵按下,就喂狗,只要 WK_UP 不停的按,看門(mén)狗就一直不會(huì)產(chǎn)生復(fù)位,保持 LED 0 的常亮,一旦超過(guò)看門(mén)狗溢出時(shí)間(Tout)還沒(méi)按,那么將會(huì)導(dǎo)致程序重啟,這將導(dǎo)致 LED 0 熄滅一次。
實(shí)驗(yàn)七 定時(shí)器中斷實(shí)驗(yàn)
一. 實(shí)驗(yàn)簡(jiǎn)介
STM32 的定時(shí)器是一個(gè)通過(guò)可編程預(yù)分頻器(PSC)驅(qū)動(dòng)的 16 位自動(dòng)裝載計(jì)數(shù)器(CNT)構(gòu)成。STM32 的通用定時(shí)器可以被用于:測(cè)量輸入信號(hào)的脈沖長(zhǎng)度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和 PWM)等。使用定時(shí)器預(yù)分頻器和 RCC 時(shí)鐘控制器預(yù)分頻器,脈沖長(zhǎng)度和波形周期可以在幾微秒到幾毫秒間調(diào)整。STM32 的每個(gè)通用定時(shí)器都是完全獨(dú)立的,沒(méi)有互相共享的任何資源。
二.實(shí)驗(yàn)?zāi)康?/p>
熟練掌握定時(shí)器中斷,學(xué)會(huì)對(duì)定時(shí)器中斷的編程操作。
三.實(shí)驗(yàn)內(nèi)容
使用定時(shí)器產(chǎn)生中斷,然后在中斷服務(wù)函數(shù)里面翻轉(zhuǎn) LED1 上的電平,來(lái)指示定時(shí)器中斷的產(chǎn)生,修改中斷時(shí)間。
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。
軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。
五.實(shí)驗(yàn)步驟
1.參考教材定時(shí)器中斷部分,編寫(xiě)定時(shí)器中斷的驅(qū)動(dòng)程序。2.編寫(xiě)主程序
3.編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4.記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
七.實(shí)驗(yàn)總結(jié)
通過(guò)本次實(shí)驗(yàn),認(rèn)識(shí)到時(shí)間中斷來(lái)控制LED燈的閃爍,同時(shí)也可以將時(shí)間中斷應(yīng)用到控制其他的程序塊。
以TIME3為例產(chǎn)生中斷的步驟為 1)TIM3 時(shí)鐘使能。
2)設(shè)置 TIM3_ARR 和 TIM3_PSC 的值。
3)設(shè)置 TIM3_DIER 允許更新中斷。
4)允許 TIM3 工作。
5)TIM3 中斷分組設(shè)置。6)編寫(xiě)中斷服務(wù)函數(shù)。
在中斷產(chǎn)生后,通過(guò)狀態(tài)寄存器的值來(lái)判斷此次產(chǎn)生的中斷屬于什么類(lèi)型。然后執(zhí)行相關(guān)的操作,我們這里使用的是更新(溢出)中斷,所以在狀態(tài)寄存器 SR 的最低位。在處理完中斷之后應(yīng)該向 TIM3_SR 的最低位寫(xiě) 0,來(lái)清除該中斷標(biāo)志。
實(shí)驗(yàn)十三 ADC實(shí)驗(yàn)
一.實(shí)驗(yàn)簡(jiǎn)介
通過(guò)DAC將STM32系統(tǒng)的數(shù)字量轉(zhuǎn)換為模擬量。使用ADC將模擬量轉(zhuǎn)換為數(shù)字量。
二.實(shí)驗(yàn)?zāi)康?/p>
掌握DAC和ADC編程。
三.實(shí)驗(yàn)內(nèi)容
編寫(xiě)代碼實(shí)現(xiàn)簡(jiǎn)單的DAC單次發(fā)送
編寫(xiě)代碼實(shí)現(xiàn)ADC采集DAC發(fā)送的數(shù)據(jù),并發(fā)送到串口
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。
軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。
五.實(shí)驗(yàn)步驟
1編寫(xiě)主程序
2編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板,使用串口調(diào)試助手觀察數(shù)據(jù) 3記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
七.實(shí)驗(yàn)總結(jié)
本節(jié)將利用 STM32的 ADC1 通道 0 來(lái)采樣外部電壓值,并在串口調(diào)試助手中顯示出來(lái)。步驟如下:
1)開(kāi)啟 PA 口時(shí)鐘,設(shè)置 PA0 為模擬輸入。
2)使能 ADC1 時(shí)鐘,并設(shè)置分頻因子。
3)設(shè)置 ADC1 的工作模式。
4)設(shè)置 ADC1 規(guī)則序列的相關(guān)信息。
5)開(kāi)啟 AD 轉(zhuǎn)換器,并校準(zhǔn)。
6)讀取 ADC 值。
在上面的校準(zhǔn)完成之后,ADC 就算準(zhǔn)備好了。接下來(lái)我們要做的就是設(shè)置規(guī)則序列 0 里面的通道,然后啟動(dòng) ADC 轉(zhuǎn)換。在轉(zhuǎn)換結(jié)束后,讀取 ADC1_DR 里面的值。
通過(guò)以上幾個(gè)步驟的設(shè)置,可以正常的使用 STM32 的 ADC1 來(lái)執(zhí)行 AD 轉(zhuǎn)換操作。
通過(guò)本次實(shí)驗(yàn)的學(xué)習(xí),我們了解了STM32 ADC的使用,但這僅僅是STM32強(qiáng)大的ADC 功能的一小點(diǎn)應(yīng)用。STM32 的ADC 在很多地方都可以用到,其ADC 的DMA 功能是很不錯(cuò)的,實(shí)驗(yàn)十五 DMA實(shí)驗(yàn)
一. 實(shí)驗(yàn)簡(jiǎn)介
直接存儲(chǔ)器存取(DMA)用來(lái)提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。無(wú)須CPU干預(yù),數(shù)據(jù)可以通過(guò)DMA快速地移動(dòng),這就節(jié)省了CPU的資源來(lái)做其他操作。
二.實(shí)驗(yàn)?zāi)康?/p>
熟練掌握DMA編程,學(xué)會(huì)對(duì)EPC02的讀寫(xiě)操作,學(xué)習(xí)雙緩沖兵乓操作,理解互斥資源。提高編程能力。
三.實(shí)驗(yàn)內(nèi)容
利用外部按鍵KEY0 來(lái)控制DMA 的傳送,每按一次KEY0,DMA 就傳送一次數(shù)據(jù)
到USART1,然后在串口調(diào)試助手觀察進(jìn)度等信息。LED0 還是用來(lái)做為程序運(yùn)行的指示燈。
這里我們使用到的硬件資源如下: 1)按鍵KEY0。2)指示燈LED0。
3)使用串口調(diào)試助手觀察數(shù)據(jù)
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。
軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、網(wǎng)絡(luò)調(diào)試助手。
五.實(shí)驗(yàn)步驟
1編寫(xiě)主程序
2編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板,使用串口調(diào)試助手觀察數(shù)據(jù) 3記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
伴隨 LED0 的不停閃爍,提示程序在運(yùn)行。我們打開(kāi)串口調(diào)試助手,然后按KEY0,可以看到串口顯示如下內(nèi)容:
七.實(shí)驗(yàn)總結(jié)
本節(jié)利用 STM32 的 DMA 來(lái)實(shí)現(xiàn)串口數(shù)據(jù)傳送,DMA通道的配置需要: 1)設(shè)置外設(shè)地址。
2)設(shè)置存儲(chǔ)器地址。
3)設(shè)置傳輸數(shù)據(jù)量。
4)設(shè)置通道 4 的配置信息。
5)使能 DMA1 通道 4,啟動(dòng)傳輸。
通過(guò)以上 5 步設(shè)置,我們就可以啟動(dòng)一次 USART1 的 DMA 傳輸了。
DMA控制器對(duì)DMA請(qǐng)求判別優(yōu)先級(jí)及屏蔽,向總線裁決邏輯提出總線請(qǐng)求。當(dāng)CPU執(zhí)行完當(dāng)前總線周期即可釋放總線控制權(quán)。此時(shí),總線裁決邏輯輸出總線應(yīng)答,表示DMA已經(jīng)響應(yīng),通過(guò)DMA控制器通知I/O接口開(kāi)始DMA傳輸。
DMA控制器獲得總線控制權(quán)后,CPU即刻掛起或只執(zhí)行內(nèi)部操作,由DMA控制器輸出讀寫(xiě)命令,直接控制RAM與I/O接口進(jìn)行DMA傳輸。
在DMA控制器的控制下,在存儲(chǔ)器和外部設(shè)備之間直接進(jìn)行數(shù)據(jù)傳送,在傳送過(guò)中不需要中央處理器的參與。開(kāi)始時(shí)需提供要傳送的數(shù)據(jù)的起始位置和數(shù)據(jù)長(zhǎng)度。
當(dāng)完成規(guī)定的成批數(shù)據(jù)傳送后,DMA控制器即釋放總線控制權(quán),并向I/O接口發(fā)出結(jié)束信號(hào)。當(dāng)I/O接口收到結(jié)束信號(hào)后,一方面停 止I/O設(shè)備的工作,另一方面向CPU提出中斷請(qǐng)求,使CPU從不介入的狀態(tài)解脫,并執(zhí)行一段檢查本次DMA傳輸操作正確性的代碼。最后,帶著本次操作結(jié)果及狀態(tài)繼續(xù)執(zhí)行原來(lái)的程序。
由此可見(jiàn),DMA傳輸方式無(wú)需CPU直接控制傳輸,也沒(méi)有中斷處理方式那樣保留現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的過(guò)程,通過(guò)硬件為RAM與I/O設(shè)備開(kāi)辟一條直接傳送數(shù)據(jù)的通路,使CPU的效率大為提高。
實(shí)驗(yàn)十六 I2C實(shí)驗(yàn)
一.實(shí)驗(yàn)簡(jiǎn)介
編程實(shí)現(xiàn)對(duì)使用I2C接口的EPC02芯片進(jìn)行寫(xiě)和讀操作。
二.實(shí)驗(yàn)?zāi)康?/p>
熟練掌握I2C編程,學(xué)會(huì)對(duì)EPC02的讀寫(xiě)操作。
三.實(shí)驗(yàn)內(nèi)容
編寫(xiě)I2C驅(qū)動(dòng)程序,使用驅(qū)動(dòng)程序初始化EPC02,判斷設(shè)備正確性。
寫(xiě)256個(gè)0x5A到EPC02,讀出并發(fā)送給串口,通過(guò)串口調(diào)試助手判別是否讀到的都是0x5A.四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。
軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。
五.實(shí)驗(yàn)步驟
1參考教材I2C部分,編寫(xiě)I2C驅(qū)動(dòng)程序。2編寫(xiě)主程序
3編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
伴隨 LED0 的不停閃爍,提示程序在運(yùn)行。我們先按下KEY0,可以看到如下所示的內(nèi)容,證明數(shù)據(jù)已經(jīng)被寫(xiě)入到24C02了。
接著我們按KEY2,可以看我們剛剛寫(xiě)入的數(shù)據(jù)被顯示出來(lái)了,如下圖所示:
源代碼:
七.實(shí)驗(yàn)總結(jié)
IIC是由數(shù)據(jù)線 SDA 和時(shí)鐘 SCL 構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在 CPU 與被控 IC 之間、IC 與 IC 之間進(jìn)行雙向傳送,高速 IIC 總線一般可達(dá) 400kbps 以上。
IIC總線在傳送數(shù)據(jù)過(guò)程中共有三種類(lèi)型信號(hào),它們分別是:開(kāi)始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。這些信號(hào)中,起始信號(hào)是必需的,結(jié)束信號(hào)和應(yīng)答信號(hào),都可以不要。程序在開(kāi)機(jī)的時(shí)候會(huì)檢測(cè) 24C02 是否存在,如果不存在則會(huì)在TFTLCD 模塊上顯示錯(cuò)誤信息,同時(shí)LED0 慢閃。大家可以通過(guò)跳線帽把PC11 和PC12 短接就可以看到報(bào)錯(cuò)了。通過(guò)本次實(shí)驗(yàn),我掌握了如何使用IIC寫(xiě)入與讀出數(shù)據(jù),學(xué)習(xí)了編寫(xiě)I2C驅(qū)動(dòng)程序,使用驅(qū)動(dòng)程序初始化EPC02,判斷設(shè)備正確性,以及如何在助手上顯示。
實(shí)驗(yàn)十七 SPI實(shí)驗(yàn)
一.實(shí)驗(yàn)簡(jiǎn)介
編程實(shí)現(xiàn)對(duì)SPI接口的W25Q64進(jìn)行讀寫(xiě)操作。
二.實(shí)驗(yàn)?zāi)康?/p>
熟練掌握SPI編程,學(xué)會(huì)對(duì)的W25Q64讀寫(xiě)操作。
三.實(shí)驗(yàn)內(nèi)容
1.2.3.4.5.編寫(xiě)SPI驅(qū)動(dòng)程序 初始化SPI接口
讀取SPIFLASH的ID,如果正確繼續(xù),否則報(bào)錯(cuò)
向SPIFALSH地址0x12AB00開(kāi)始寫(xiě)一串字符,再讀出比較判斷是否與寫(xiě)入的一致 向SPIFALSH地址0x12AB00開(kāi)始寫(xiě)連續(xù)256個(gè)字節(jié)的0x5A,然后讀出并發(fā)送給串口,通過(guò)串口調(diào)試助手判別是否讀到的都是0x5A.四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。
軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。
五.實(shí)驗(yàn)步驟
1參考SPI及SPI FLASH部分,編寫(xiě)SPI及SPI FLASH驅(qū)動(dòng)程序(可參考書(shū)上代碼)。2編寫(xiě)主程序
3編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
伴隨 LED0 的不停閃爍,提示程序在運(yùn)行。我們先按下KEY0,可以看到如圖13.17.4.2 所示的內(nèi)容,證明數(shù)據(jù)已經(jīng)被寫(xiě)入到W25X16了。
接著我們按KEY2,可以看我們剛剛寫(xiě)入的數(shù)據(jù)被顯示出來(lái)了,如下圖所示:
七.實(shí)驗(yàn)總結(jié)
SPI 接口主要應(yīng)用在EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD 轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為 PCB 的布局上節(jié)省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議,STM32 也有 SPI 接口。
SPI 的設(shè)置步驟:
1)配置相關(guān)引腳的復(fù)用功能,使能 SPI時(shí)鐘。
2)設(shè)置 SPI 工作模式。
3)使能 SPI。
程序在開(kāi)機(jī)的時(shí)候會(huì)檢測(cè) W25X16 是否存在,如果不存在則會(huì)在TFTLCD 模塊上顯示錯(cuò)誤信息,同時(shí)LED0 慢閃。大家可以通過(guò)跳線帽把PA5 和PA6 短接就可以看到報(bào)錯(cuò)了。通過(guò)本實(shí)驗(yàn),我掌握了編寫(xiě)SPI程序?qū)懭牒妥x取FLASH的方法,掌握了對(duì)學(xué)會(huì)對(duì)的W25Q64讀寫(xiě)操作。對(duì)STM32開(kāi)發(fā)板有了進(jìn)一步的了解。
實(shí)驗(yàn)二十一 紅外遙控實(shí)驗(yàn)
一. 實(shí)驗(yàn)簡(jiǎn)介
編程實(shí)現(xiàn)通過(guò)在 ALIENTEK MiniSTM32 開(kāi)發(fā)板上實(shí)現(xiàn)紅外遙控器的控制。
二.實(shí)驗(yàn)?zāi)康?/p>
掌握編程實(shí)現(xiàn)紅外遙控控制開(kāi)發(fā)板的方法。
三.實(shí)驗(yàn)內(nèi)容
1.編寫(xiě)紅外遙控驅(qū)動(dòng)程序 2.編寫(xiě)紅外遙控程序代碼 3.使用紅外遙控控制開(kāi)發(fā)板
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。
五.實(shí)驗(yàn)步驟
4.編寫(xiě)紅外遙控驅(qū)動(dòng)程序 5.編寫(xiě)紅外遙控程序代碼
6.編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 7.記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
使用串口調(diào)試助手觀察數(shù)據(jù)
七.實(shí)驗(yàn)總結(jié)
紅外遙控是一種無(wú)線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用,并越來(lái)越多的應(yīng)用到計(jì)算機(jī)系統(tǒng)中。
通過(guò)本節(jié)實(shí)驗(yàn),我學(xué)習(xí)到了如何編程使用紅外遙控控制,在本程序中只是簡(jiǎn)單地輸出一個(gè)數(shù)值,在以后的應(yīng)用中可以實(shí)現(xiàn)更強(qiáng)大的功能,比如用紅外遠(yuǎn)程輸入控制開(kāi)發(fā)板進(jìn)行一些操作。對(duì)STM32有了進(jìn)一步的認(rèn)識(shí)。
實(shí)驗(yàn)二十二 DS18B20實(shí)驗(yàn)
一. 實(shí)驗(yàn)簡(jiǎn)介
一. 在ALIENTEK MiniSTM32 開(kāi)發(fā)板上,通過(guò) DS18B20 來(lái)讀取環(huán)境溫度值。
二.實(shí)驗(yàn)?zāi)康?/p>
鞏固SPI編程。掌握使用感應(yīng)器獲取環(huán)境溫度的方法。
三.實(shí)驗(yàn)內(nèi)容
1.復(fù)位脈沖和應(yīng)答脈沖
2.寫(xiě)時(shí)序
3.讀時(shí)序
四.實(shí)驗(yàn)設(shè)備
硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。
五.實(shí)驗(yàn)步驟
1.2.3.4.參考教材DS18B20編程部分,編寫(xiě)DS18B20驅(qū)動(dòng)程序 編寫(xiě)主程序
編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告
六.實(shí)驗(yàn)結(jié)果及測(cè)試
源代碼:
使用串口調(diào)試助手觀察數(shù)據(jù):
七.實(shí)驗(yàn)總結(jié)
DS18B20 是由 DALLAS 半導(dǎo)體公司推出的一種的“一線總線”接口的溫度傳感器。與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口簡(jiǎn)單的數(shù)字化溫度傳感器。
通過(guò)本次實(shí)驗(yàn),我認(rèn)識(shí)到STM32的強(qiáng)大,在開(kāi)發(fā)板上可以添加其他感應(yīng)器從而實(shí)現(xiàn)更強(qiáng)大的功能。添加了DS18B20后的開(kāi)發(fā)板可以感應(yīng)外界的溫度,通過(guò)公式計(jì)算顯示出來(lái)。