久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

嵌入式實驗報告

時間:2019-05-11 22:41:25下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《嵌入式實驗報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《嵌入式實驗報告》。

第一篇:嵌入式實驗報告

實驗一 ARM匯編語言程序設計

一、實驗目的

1.了解IAR Embedded Workbench 集成開發環境 2.掌握ARM匯編指令程序的設計及調試

二、實驗設備

1.PC操作系統WIN98或WIN2000或WINXP,ADSI.2集成開發環境,仿真驅動程序

三、實驗內容

1.熟悉IAR Embedded Workbench 集成開發環境

2.理解下列程序,新建工程,加入下面的程序,并觀察實驗結果,解釋程序實現的功能

分析:該程序實現的功能是程序功能:Y = A*B+C*D+E*F 程序代碼:

AREA Examl, CODE,READONLY;定義一個代碼段 ENTRY

;程序入口

MOV R0,#0;設置R0寄存器的值為0 MOV R8,#0;設置R8寄存器的值為0 ADR R2,N;將R2寄存器的值設為數據域N的地址 LDR R1,[R2];將以R2的值為地址的數據讀入R1 MOV R2,#0;設置R2的值為0 ADR R3,C;將R3寄存器的值設為數據域C的地址 ADR R5,X;將R5寄存器的值設為數據域X的地址 LOOP LDR R4,[R3,R8];將R3+R8的數據讀入R4 LDR R6,[R5,R8];將R5+R8的數據讀入R6 MUL R9,R4,R6;R9 = R4*R6 ADD R2,R2,R9;R2 = R2+R9 ADD R8,R8,#4;R8 = R8+4 ADD R0,R0,#1;R0 = R0+1 CMP R0,R1;比較R0和R1的值 BLT LOOP;R0

執行結果如下:

3.實現1+2+3+4+····+100,求的值,并保存在地址0x90018的地址里面

程序代碼:

MOV R0,#100;設置R0寄存器的值為100 LDR R2,=0X90018;設置R2寄存器指向地址0x90018 MOV R1,#0;設置R1的值為0 MOV R3,#0;設置R3的值為0 LOOP ADD R3,R3,R0;R3 = R3+R0 SUB R0,R0,#1;R0 = R0-1 CMP R0,R1;將R0和R1的值比較

BNE LOOP;不相等的話繼續執行循環

STR R3,[R2];將R3的值裝入到R2指向的地址塊中。END 程序執行結果:程序執行完在0x90018內存入的數據是0x13ba即5050

實驗二 ARM匯編語言程序設計

一、實驗目的

1.了解ARM匯編語言的基本框架,學會使用ARM的匯編語言編程; 2.掌握ARM匯編指令中的堆棧指令的操作,以及存儲器的裝載指令操作。

二、實驗設備 1.PC操作系統WIN98或WIN2000或WINXP,ADS1.2.集成開發環境,仿真器驅動程序。

三、實驗內容

1.理解下列程序,新建工程,加入下面的程序,并觀察實驗結果

程序代碼:

x EQU 15;定義常量x=15 y EQU 61;定義常量y=61 stack_top EQU 0X1000;定義堆棧棧頂地址為0x1000 ENTRY;程序入口處

MOV sp,#stack_top;將堆棧指針指向棧頂 MOV r0,#x;將x的值放入r0 STR r0,[sp];將r0的值壓入堆棧 MOV r0,#y;將y的值放入r0 LDR r1,[sp];將x的值放入r1 ADD r0,r0,r1;r0 = r0+r1 STR r0,[sp];將r0的值裝入堆棧 Stop;B stop;程序結果為:r1 = x+y = 0x6D

2.編寫程序循環R4~R11進行累加8次賦值,R4~R11初始值是1~8,每次操作后把R4~R11的內容放到SP棧中,SP初始設置為0x800,最后把R4~R11用LDMFD指令清空為0

程序代碼如下: X EQU 1;定義常量x = 1 stack_top EQU 0X800;定義棧頂地址 ENTRY;MOV SP,#stack_top;將棧頂地址指向0x800 MOV R4,#1;設置R4 = 1 MOV R5,#2;設置R5 = 2 MOV R6,#3;設置R6 = 3 MOV R7,#4;設置R7 = 4 MOV R8,#5;設置R8 = 5 MOV R9,#6;設置R9 = 6 MOV R10,#7;設置R10 = 7 MOV R11,#8;設置R11 = 8 LOOP ADD R4,R4,#x;R4累加1 ADD R5,R5,#x;R5累加1 ADD R6,R6,#x;R6累加1 ADD R7,R7,#x;R7累加1 ADD R8,R8,#x;R8累加1 ADD R9,R9,#x;R9累加1 ADD R10,R10,#x;R10累加1 ADD R11,R11,#x;R11累加1 STMIA SP!,{R4-R11};將R4-R11的值壓入堆棧

CMP R4,#9;比較R4和9的大小

BLT LOOP;R4 < 9繼續執行循環

LDMFD SP!,{R4-R11};將R4-R11清零 END;實驗結果:主要實現將數據2-9,3-10,4-11……9-16壓入堆棧(初始地址是0x800處開始),最后將R4-R11全部清零。

3.更改實驗中1中的X,Y的值,觀察期結果 程序代碼:

x EQU 20 y EQU 120 stack_top EQU 0X1000 ENTRY MOV sp,#stack_top MOV r0,#x STR r0,[sp] MOV r0,#y LDR r1,[sp] ADD r0,r0,r1 STR r0,[sp] Stop B Stop END 程序結果為:r0 = x+y = 140 = 0X8C

實驗三 ARM匯編語言程序設計

一、實驗目的

1.了解ARM匯編語言的基本框架,學會使用ARM的匯編語言編程

2.掌握ARM匯編的存儲器加載/存儲指令,及if條件、循環、循環及循環的匯編實現

二、實驗設備

1.PC操作系統WIN98或WIN2000或WINXP,ADS1.2集成開發環境,仿真器驅動程序

三、實驗內容

1.理解下列程序,新建工程,加入下面的程序,并觀察實驗結果 程序代碼:

Num EQU 20;定義常量Num = 20 START;LDR r0,=src;將src數據塊的開始地址存入r0中 LDR r1,=dst;將dst數據塊的開始地址存入r1中 MOV r2,#Num;設置r2的值為20 MOV sp,#0x400;堆棧指針sp指向0x400 blockcopy;MOVS r3,r2,LSR #3;將r2左移3位移入r3并且影響標志位 BEQ copywords;結果為0的話跳轉到copywords STMFD SP!,{r4-r11};將r4-r11的值入棧 octcopy;LDMIA r0!,{r4-r11};將src的前8個字數據存入讓r4-r11 STMIA r1!,{r4-r11};將r4-r11中的數據放入dst數據塊中 SUBS r3,r3,#1;r3 = r3-1 BNE octcopy;結果不為0跳轉到octcopy LDMFD SP!,{R4-R11};恢復原來的r4-r11 copywords;ANDS r2,r2,#7;r2 = r2&7 BEQ stop;結果為0跳轉到stop wordcopy;LDR r3,[r0],#4;將r0指向的字數據放入r3中,r0 = r0+4 STR r3,[r1],#4;將r3中的數據存入到dst數據塊中,r1 = r1+4 SUBS r2,r2,#1;r2 = r2-1 BNE wordcopy;不為0跳轉到wordcopy處 stop;B stop;src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4;dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;END;程序結果:將src的數據全部存入到dst中

2.新建工程,并自行編寫程序,分別使用LDR,STR,LDMIA,STMIA操作,實現對某段連續存儲單元寫入數據,并觀察結果 程序代碼:

MOV R4,#1;設置r4 = 1; MOV R5,#2;設置r5 = 1; MOV R6,#3;設置r4 = 1;

LDR R0,=dst;R0保存dst的首地址

STR R4,[R0];將r4的值裝入r0執行的內存中

STR R5,[R0,#4];將r5的值裝入r0+4執行的內存中 STR R6,[R0,#8];將r6的值裝入r0+8執行的內存中 LDR R7,=src;R0保存src的首地址

LDMIA R7,{R8-R10};將r7執行的地址的數據讀入r8=r10 LDR R3,=N;r3保存N的首地址

STMIA R3!,{R8-R10};將r8-r10裝入r3指向的內存 N DCD 0,0,0 src DCD 1,2,3 dst DCD 0,0,0 END 程序結果:熟悉使用LDMIA,STMIA和LDR,STR指令

3.使用ARM匯編指令實現if條件執行,使用ARM匯編指令實現for條件執行,使用ARM匯編指令實現while條件執行,使用ARM匯編指令實現do…while條件執行。程序代碼:

實現if條件: MOV R0,#1 MOV R1,#2 CMP R0,R1 BGT LOOP1 BLT LOOP2 LOOP1 MOV R3,R0 LOOP2 MOV R3,R1 END 程序結果:

實現for和while條件:

MOV R1,#1 MOV R3,#0 MOV R2,#101;LOOP ADD R3,R1,R3 ADD R1,R1,#1 CMP R1,R2 BLT LOOP END 程序結果:

實現do…while條件:

MOV R0,#1 MOV R1,#100 MOV R3,#0 LOOP CMP R0,R1 BGT STOP ADD R3,R0,R3 ADD R0,R0,#1 B LOOP STOP END 程序結果:

實驗四 基于ARM的C語言程序設計

一、實驗目的

1.了解ARM C語言的基本框架,學會使用ARM的C語言編程。2.掌握C語言和匯編語言編程的相互調用。

二、實驗設備

1.EL-ARM-830教學實驗箱,PentiumII以上的PC機,仿真器電纜。

三、ARM C語言簡介與使用規則

1.ARM使用C語言編程是大勢所趨

在應用系統的程序設計中,若所有的編程任務均由匯編語言來完成,其工作量巨大,并且不宜移植。由于ARM的程序執行速度較高,存儲器的存儲速度和存儲量也很高,因此,C語言的特點充分發揮,使得應用程序的開發時間大為縮短,代碼的移植十分方便,程序的重復使用率提高,程序架構清晰易懂,管理較為容易等等。因此,C語言的在ARM編程中具有重要地位。

2.ARM C語言程序的基本規則

在ARM程序的開發中,需要大量讀寫硬件寄存器,并且盡量縮短程序的執行時間的代碼一般使用匯編語言來編寫,比如ARM的啟動代碼,ARM的操作系統的移植代碼等,除此之外,絕大多數代碼可以使用C語言來完成。

C語言使用的是標準的C語言,ARM的開發環境實際上就是嵌入了一個C語言的集成開發環境,只不過這個開發環境和ARM的硬件緊密相關。

在使用C語言時,要用到和匯編語言的混合編程。當匯編代碼較為簡潔,則可使用直接內嵌匯編的方法,否則,使用將匯編文件以文件的形式加入項目當中,通過ATPCS的規定與C程序相互調用與訪問。

ATPCS,就是ARM、Thumb的過程調用標準(ARM/Thumb Procedure Call Standard),它規定了一些子程序間調用的基本規則。如寄存器的使用規則,堆棧的使用規則,參數的傳遞規則等。

在C程序和ARM的匯編程序之間相互調用必須遵守ATPCS。而使用ADS的C語言編譯器編譯的C語言子程序滿足用戶指定的ATPCS的規則。但是,對于匯編語言來說,完全要依賴用戶保證各個子程序遵循ATPCS的規則。具體來說,匯編語言的子程序應滿足下面3個條件:

● 在子程序編寫時,必須遵守相應的ATPCS規則; ● 堆棧的使用要遵守相應的ATPCS規則; ● 在匯編編譯器中使用-atpcs選項。基本的ATPCS規定,請詳見相關技術文檔。

匯編程序調用C程序

匯編程序的設置要遵循ATPCS規則,保證程序調用時參數正確傳遞。在匯編程序中使用IMPORT偽指令聲明將要調用的C程序函數。在調用C程序時,要正確設置入口參數,然后使用BL調用。

C程序調用匯編程序

匯編程序的設置要遵循ATPCS規則,保證程序調用時參數正確傳遞。

在匯編程序中使用EXPORT偽指令聲明本子程序,使其他程序可以調用此子程序。在C語言中使用extern關鍵字聲明外部函數(聲明要調用的匯編子程序)。

在C語言的環境內開發應用程序,一般需要一個匯編的啟動程序,從匯編的啟動程序,跳到C語言下的主程序,然后,執行C程序,在C環境下讀寫硬件的寄存器,一般是通過宏調用,在每個項目文件的Startup44b0/INC目錄下都有一個44b.h的頭文件,那里面定義了所有關于44B0的硬件寄存器的宏,對宏的讀寫,就能操作44B0的硬件。

具體的編程規則同標準C語言。

四、實驗內容

1、理解下列程序,新建工程,加入下面的程序,并觀察實驗結果。程序代碼:

/*實現5個數的相加*/ int sum5(int a,int b,int c,int d,int e){ return(a+b+c+d+e);};匯編語言

IMPORT sum5;聲明調用c函數 CALLSUMS STMFD SP!,{LR};將LR寄存器入棧 MOV R0,#1;r0 = 1 ADD R1,R0,R0;r1 = 2 ADD R2,R1,R0;r2 = 3 ADD R3,R1,R2;r3 = 5 STR R3,[SP,#-4]!;將r3的值入棧當做第五個參數 ADD R3,R1,R1;R3 = R3+R1=4 BL sum5;調用sum5 ADD SP,SP,#4;sp = sp+4 LDMFD SP,{PC} 程序結果:實現了i+2i+3i+4i+5i的匯編語言調用c語言

2、用匯編語言實現1到100累加的函數,用C言語編寫主程序,在主程序中調用所編寫的匯編函數 程序代碼:

NAME asmfile PUBLIC sum5 SECTION.intvec : CODE(2)CODE32 sum5 ENTRY MOV R1,#1 MOV R2,#0 sum6 ADD R2,R1,R2 ADD R1,R1,#1 CMP R1,R0 BLE sum6 MOV PC,LR END

#include extern void sum5(int x);int main(void){ const int n = 100;sum5(n);return(0);} 程序結果:

總結

本次實驗主要是通過對ARM的各種指令進行操作,通過對這些指令的應用,讓我們學會了如何使用匯編來進行編程,掌握匯編編程和C語言編程的技巧,并且能夠熟練的使用匯編語言,深刻理解ARM的工作。并且培養了我們寫代碼的能力以及對代碼的閱讀能力和修改能力。為我們在以后的學習和生活中更實用ARM,利用匯編進行編程奠定了一定的基礎!

第二篇:嵌入式實驗報告

目錄

實驗一 跑馬燈實驗.........................................................................1 實驗二 按鍵輸入實驗.....................................................................3 實驗三 串口實驗.............................................................................5 實驗四 外部中斷實驗.....................................................................8 實驗五 獨立看門狗實驗................................................................11 實驗七 定時器中斷實驗................................................................13 實驗十三 ADC實驗........................................................................15 實驗十五 DMA實驗........................................................................17 實驗十六 I2C實驗........................................................................21 實驗十七 SPI實驗........................................................................24 實驗二十一 紅外遙控實驗............................................................27 實驗二十二 DS18B20實驗.............................................................30

實驗一 跑馬燈實驗

一.實驗簡介

我的第一個實驗,跑馬燈實驗。

二.實驗目的

掌握STM32開發環境,掌握從無到有的構建工程。

三.實驗內容

熟悉MDK KEIL開發環境,構建基于固件庫的工程,編寫代碼實現跑馬燈工程。通過ISP下載代碼到實驗板,查看運行結果。使用JLINK下載代碼到目標板,查看運行結果,使用JLINK在線調試。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件。

五.實驗步驟

1.熟悉MDK KEIL開發環境 2.熟悉串口編程軟件ISP 3.查看固件庫結構和文件

4.建立工程目錄,復制庫文件 5.建立和配置工程 6.編寫代碼 7.編譯代碼

8.使用ISP下載到實驗板 9.測試運行結果

10.使用JLINK下載到實驗板 11.單步調試

12.記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

兩個燈LED0與LED1實現交替閃爍的類跑馬燈效果,每300ms閃爍一次。

七.實驗總結

通過本次次實驗我了解了STM32開發板的基本使用,初次接觸這個開發板和MDK KEILC軟件,對軟件操作不太了解,通過這次實驗了解并熟練地使用MDK KEIL軟件,用這個軟件來編程和完成一些功能的實現。作為 STM32 的入門第一個例子,詳細介紹了STM32 的IO口操作,同時鞏固了前面的學習,并進一步介紹了MDK的軟件仿真功能。

實驗二 按鍵輸入實驗

一.實驗簡介

在實驗一的基礎上,使用按鍵控制流水燈速度,及使用按鍵控制流水燈流水方向。

二.實驗目的

熟練使用庫函數操作GPIO,掌握中斷配置和中斷服務程序編寫方法,掌握通過全局變量在中斷服務程序和主程序間通信的方法。

三.實驗內容

實現初始化GPIO,并配置中斷,在中斷服務程序中通過修改全局變量,達到控制流水燈速度及方向。

使用JLINK下載代碼到目標板,查看運行結果,使用JLINK在線調試。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK、示波器。軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件。

五.實驗步驟

1在實驗1代碼的基礎上,編寫中斷初始化代碼

2在主程序中聲明全局變量,用于和中斷服務程序通信,編寫完成主程序 3編寫中斷服務程序

4編譯代碼,使用JLINK下載到實驗板 5.單步調試

6記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

我們將通過MiniSTM32 板上載有的3個按鈕,來控制板上的2個LED,其中KEY0控制LED0,按一次亮,再按一次,就滅。KEY1 控制LED1,效果同KEY0。KEY_2(KEY_UP),同時控制LED0 和LED1,按一次,他們的狀態就翻轉一次。

七.實驗總結

通過本次實驗,我學會了如何使用STM32 的IO 口作為輸入用。TM32 的IO 口做輸入使用的時候,是通過讀取IDR 的內容來讀取IO 口的狀態的。這里需要注意的是 KEY0 和KEY1 是低電平有效的,而WK_UP 是高電平有效的,而且要確認WK_UP 按鈕與DS18B20 的連接是否已經斷開,要先斷開,否則DS18B20 會干擾WK_UP按鍵!并且KEY0 和KEY1 連接在與JTAG 相關的IO 口上,所以在軟件編寫的時候要先禁用JTAG 功能,才能把這兩個IO 口當成普通IO 口使用。

實驗三 串口實驗

一.實驗簡介

編寫代碼實現串口發送和接收,將通過串口發送來的數據回送回去。

二.實驗目的

掌握STM32基本串口編程,進一步學習中斷處理。

三.實驗內容

編寫主程序,初始化串口1,設置波特率為9600,無校驗,數據位8位,停止位1位。編寫中斷服務程序代碼實現將發送過來的數據回送。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK、示波器。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1編寫串口初始化代碼

2編寫中斷服務程序代碼

3編譯代碼,使用JLINK或ISP下載到實驗板 4記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

把代碼下載到 MiniSTM32 開發板,可以看到板子上的LED0 開始閃爍,說明程序已經在跑了。接著我們打開串口調試助手,看到如下信息:

證明串口數據發送沒問題。接著,我們在發送區輸入上面的文字,輸入完后按回車鍵。然后單擊發送,可以得到如下結果:

七.實驗總結

通過本次實驗,我進一步了解了串口的使用,學會了通過串口發送和接收數據,將通過串口發送來的數據回送回去。該實驗的硬件配置不同于前兩個實驗,串口 1 與USB 串口默認是分開的,并沒有在PCB上連接在一起,需要通過跳線帽來連接一下。這里我們把P4 的RXD 和TXD 用跳線帽與P3 的PA9 和PA10 連接起來。

實驗四 外部中斷實驗

一.實驗簡介

STM32 的 IO 口在本章第一節有詳細介紹,而外部中斷在第二章也有詳細的闡述。這里我們將介紹如何將這兩者結合起來,實現外部中斷輸入。

二.實驗目的

進一步掌握串口編程,進一步學習外部中斷編程,提高編程能力。

三.實驗內容

初始化IO口的輸入,開啟復用時鐘,設置IO與中斷的映射關系,從而開啟與IO口相對應的線上中斷事件,設置觸發條件。配置中斷分組(NVIC),并使能中斷,編寫中斷服務函數。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK、示波器。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1.2.3.4.編寫中斷服務程序代碼 使用ISP下載到實驗板 測試運行結果

記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

打開串口助手。

七.實驗總結

首先需要將IO設置為中斷輸入口: 1)初始化 IO 口為輸入。

2)開啟 IO 口復用時鐘,設置 IO 口與中斷線的映射關系。

3)開啟與該 IO口相對的線上中斷/事件,設置觸發條件。

4)配置中斷分組(NVIC),并使能中斷。

5)編寫中斷服務函數。

這一節,使用的是中斷來檢測按鍵,通過 WK_UP 按鍵實現按一次 LED0 和 LED 1 同時翻轉,按 KEY0 翻轉 LED0,按 KEY1 翻轉 LED1。

試驗中外部中斷函數不能進入的原因分析 : 1)GPIO或者AFIO的時鐘沒有開啟。2)GPIO和配置的中斷線路不匹配。3)中斷觸發方式和實際不相符合。

4)中斷處理函數用庫函數時,寫錯,經常可能出現數字和字母之間沒有下劃線。5)外部中斷是沿觸發,有可能不能檢測到沿,比如 中斷線是低電平(浮空輸入),觸發是下降沿觸發,可能會出現一直是低電平,高電平的時候是一樣的情況,電平持續為高電平。

6)沒有用軟件中斷來觸發外部中斷,調用函數EXTI_GenerateSWInterrupt;,因為軟件中斷先于邊沿中斷處理。

實驗五 獨立看門狗實驗

一. 實驗簡介

獨立看門狗(IWDG)由專用的低速時鐘(LSI)驅動,即使主時鐘發生故障它也仍然有效。窗口看門狗由從APB1時鐘分頻后得到的時鐘驅動,通過可配置的時間窗口來檢測應用程序非正常的過遲或過早的操作。

二.實驗目的

通過編程,編寫一個獨立看門狗驅動程序

三.實驗內容

啟動 STM32 的獨立看門狗,從而使能看門狗,在程序里面必須間隔一定時間喂狗,否則將導致程序復位。利用這一點,我們本章將通過一個 LED 燈來指示程序是否重啟,來驗證 STM32 的獨立看門狗。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1.2.3.4.參考教材獨立看門狗部分,編寫獨立看門狗驅動程序。建立和配置工程 編寫代碼

使用ISP下載到實驗板

記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

在配置看門狗后,看到LED0 不停的閃爍,如果WK_UP 按鍵按下,就喂狗,只要WK_UP 不停的按,看門狗就一直不會產生復位,保持LED0 的常亮,一旦超過看門狗定溢出時間(Tout)還沒按,那么將會導致程序重啟,這將導致LED0 熄滅一次。

七.實驗總結

通過本次實驗,我掌握了啟動獨立看門狗的步驟: 1)向 IWDG_KR 寫入 0X5555。2)向 IWDG_KR 寫入 0XAAAA。3)向 IWDG_KR 寫入 0XCCCC。

通過上面 3個步驟,啟動 STM32 的看門狗,從而使能看門狗,在程序里面就必須間隔一定時間喂狗,否則將導致程序復位。利用這一點,本章通過一個LED 燈來指示程序是否重啟,來驗證 STM32 的獨立看門狗。在配置看門狗后,LED0 將常亮,如果 WK_UP 按鍵按下,就喂狗,只要 WK_UP 不停的按,看門狗就一直不會產生復位,保持 LED 0 的常亮,一旦超過看門狗溢出時間(Tout)還沒按,那么將會導致程序重啟,這將導致 LED 0 熄滅一次。

實驗七 定時器中斷實驗

一. 實驗簡介

STM32 的定時器是一個通過可編程預分頻器(PSC)驅動的 16 位自動裝載計數器(CNT)構成。STM32 的通用定時器可以被用于:測量輸入信號的脈沖長度(輸入捕獲)或者產生輸出波形(輸出比較和 PWM)等。使用定時器預分頻器和 RCC 時鐘控制器預分頻器,脈沖長度和波形周期可以在幾微秒到幾毫秒間調整。STM32 的每個通用定時器都是完全獨立的,沒有互相共享的任何資源。

二.實驗目的

熟練掌握定時器中斷,學會對定時器中斷的編程操作。

三.實驗內容

使用定時器產生中斷,然后在中斷服務函數里面翻轉 LED1 上的電平,來指示定時器中斷的產生,修改中斷時間。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1.參考教材定時器中斷部分,編寫定時器中斷的驅動程序。2.編寫主程序

3.編譯代碼,使用JLINK或ISP下載到實驗板 4.記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

七.實驗總結

通過本次實驗,認識到時間中斷來控制LED燈的閃爍,同時也可以將時間中斷應用到控制其他的程序塊。

以TIME3為例產生中斷的步驟為 1)TIM3 時鐘使能。

2)設置 TIM3_ARR 和 TIM3_PSC 的值。

3)設置 TIM3_DIER 允許更新中斷。

4)允許 TIM3 工作。

5)TIM3 中斷分組設置。6)編寫中斷服務函數。

在中斷產生后,通過狀態寄存器的值來判斷此次產生的中斷屬于什么類型。然后執行相關的操作,我們這里使用的是更新(溢出)中斷,所以在狀態寄存器 SR 的最低位。在處理完中斷之后應該向 TIM3_SR 的最低位寫 0,來清除該中斷標志。

實驗十三 ADC實驗

一.實驗簡介

通過DAC將STM32系統的數字量轉換為模擬量。使用ADC將模擬量轉換為數字量。

二.實驗目的

掌握DAC和ADC編程。

三.實驗內容

編寫代碼實現簡單的DAC單次發送

編寫代碼實現ADC采集DAC發送的數據,并發送到串口

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1編寫主程序

2編譯代碼,使用JLINK或ISP下載到實驗板,使用串口調試助手觀察數據 3記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

七.實驗總結

本節將利用 STM32的 ADC1 通道 0 來采樣外部電壓值,并在串口調試助手中顯示出來。步驟如下:

1)開啟 PA 口時鐘,設置 PA0 為模擬輸入。

2)使能 ADC1 時鐘,并設置分頻因子。

3)設置 ADC1 的工作模式。

4)設置 ADC1 規則序列的相關信息。

5)開啟 AD 轉換器,并校準。

6)讀取 ADC 值。

在上面的校準完成之后,ADC 就算準備好了。接下來我們要做的就是設置規則序列 0 里面的通道,然后啟動 ADC 轉換。在轉換結束后,讀取 ADC1_DR 里面的值。

通過以上幾個步驟的設置,可以正常的使用 STM32 的 ADC1 來執行 AD 轉換操作。

通過本次實驗的學習,我們了解了STM32 ADC的使用,但這僅僅是STM32強大的ADC 功能的一小點應用。STM32 的ADC 在很多地方都可以用到,其ADC 的DMA 功能是很不錯的,實驗十五 DMA實驗

一. 實驗簡介

直接存儲器存取(DMA)用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸。無須CPU干預,數據可以通過DMA快速地移動,這就節省了CPU的資源來做其他操作。

二.實驗目的

熟練掌握DMA編程,學會對EPC02的讀寫操作,學習雙緩沖兵乓操作,理解互斥資源。提高編程能力。

三.實驗內容

利用外部按鍵KEY0 來控制DMA 的傳送,每按一次KEY0,DMA 就傳送一次數據

到USART1,然后在串口調試助手觀察進度等信息。LED0 還是用來做為程序運行的指示燈。

這里我們使用到的硬件資源如下: 1)按鍵KEY0。2)指示燈LED0。

3)使用串口調試助手觀察數據

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、網絡調試助手。

五.實驗步驟

1編寫主程序

2編譯代碼,使用JLINK或ISP下載到實驗板,使用串口調試助手觀察數據 3記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

伴隨 LED0 的不停閃爍,提示程序在運行。我們打開串口調試助手,然后按KEY0,可以看到串口顯示如下內容:

七.實驗總結

本節利用 STM32 的 DMA 來實現串口數據傳送,DMA通道的配置需要: 1)設置外設地址。

2)設置存儲器地址。

3)設置傳輸數據量。

4)設置通道 4 的配置信息。

5)使能 DMA1 通道 4,啟動傳輸。

通過以上 5 步設置,我們就可以啟動一次 USART1 的 DMA 傳輸了。

DMA控制器對DMA請求判別優先級及屏蔽,向總線裁決邏輯提出總線請求。當CPU執行完當前總線周期即可釋放總線控制權。此時,總線裁決邏輯輸出總線應答,表示DMA已經響應,通過DMA控制器通知I/O接口開始DMA傳輸。

DMA控制器獲得總線控制權后,CPU即刻掛起或只執行內部操作,由DMA控制器輸出讀寫命令,直接控制RAM與I/O接口進行DMA傳輸。

在DMA控制器的控制下,在存儲器和外部設備之間直接進行數據傳送,在傳送過中不需要中央處理器的參與。開始時需提供要傳送的數據的起始位置和數據長度。

當完成規定的成批數據傳送后,DMA控制器即釋放總線控制權,并向I/O接口發出結束信號。當I/O接口收到結束信號后,一方面停 止I/O設備的工作,另一方面向CPU提出中斷請求,使CPU從不介入的狀態解脫,并執行一段檢查本次DMA傳輸操作正確性的代碼。最后,帶著本次操作結果及狀態繼續執行原來的程序。

由此可見,DMA傳輸方式無需CPU直接控制傳輸,也沒有中斷處理方式那樣保留現場和恢復現場的過程,通過硬件為RAM與I/O設備開辟一條直接傳送數據的通路,使CPU的效率大為提高。

實驗十六 I2C實驗

一.實驗簡介

編程實現對使用I2C接口的EPC02芯片進行寫和讀操作。

二.實驗目的

熟練掌握I2C編程,學會對EPC02的讀寫操作。

三.實驗內容

編寫I2C驅動程序,使用驅動程序初始化EPC02,判斷設備正確性。

寫256個0x5A到EPC02,讀出并發送給串口,通過串口調試助手判別是否讀到的都是0x5A.四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1參考教材I2C部分,編寫I2C驅動程序。2編寫主程序

3編譯代碼,使用JLINK或ISP下載到實驗板 4記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

伴隨 LED0 的不停閃爍,提示程序在運行。我們先按下KEY0,可以看到如下所示的內容,證明數據已經被寫入到24C02了。

接著我們按KEY2,可以看我們剛剛寫入的數據被顯示出來了,如下圖所示:

源代碼:

七.實驗總結

IIC是由數據線 SDA 和時鐘 SCL 構成的串行總線,可發送和接收數據。在 CPU 與被控 IC 之間、IC 與 IC 之間進行雙向傳送,高速 IIC 總線一般可達 400kbps 以上。

IIC總線在傳送數據過程中共有三種類型信號,它們分別是:開始信號、結束信號和應答信號。這些信號中,起始信號是必需的,結束信號和應答信號,都可以不要。程序在開機的時候會檢測 24C02 是否存在,如果不存在則會在TFTLCD 模塊上顯示錯誤信息,同時LED0 慢閃。大家可以通過跳線帽把PC11 和PC12 短接就可以看到報錯了。通過本次實驗,我掌握了如何使用IIC寫入與讀出數據,學習了編寫I2C驅動程序,使用驅動程序初始化EPC02,判斷設備正確性,以及如何在助手上顯示。

實驗十七 SPI實驗

一.實驗簡介

編程實現對SPI接口的W25Q64進行讀寫操作。

二.實驗目的

熟練掌握SPI編程,學會對的W25Q64讀寫操作。

三.實驗內容

1.2.3.4.5.編寫SPI驅動程序 初始化SPI接口

讀取SPIFLASH的ID,如果正確繼續,否則報錯

向SPIFALSH地址0x12AB00開始寫一串字符,再讀出比較判斷是否與寫入的一致 向SPIFALSH地址0x12AB00開始寫連續256個字節的0x5A,然后讀出并發送給串口,通過串口調試助手判別是否讀到的都是0x5A.四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1參考SPI及SPI FLASH部分,編寫SPI及SPI FLASH驅動程序(可參考書上代碼)。2編寫主程序

3編譯代碼,使用JLINK或ISP下載到實驗板 4記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

伴隨 LED0 的不停閃爍,提示程序在運行。我們先按下KEY0,可以看到如圖13.17.4.2 所示的內容,證明數據已經被寫入到W25X16了。

接著我們按KEY2,可以看我們剛剛寫入的數據被顯示出來了,如下圖所示:

七.實驗總結

SPI 接口主要應用在EEPROM,FLASH,實時時鐘,AD 轉換器,還有數字信號處理器和數字信號解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為 PCB 的布局上節省空間,提供方便,正是出于這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議,STM32 也有 SPI 接口。

SPI 的設置步驟:

1)配置相關引腳的復用功能,使能 SPI時鐘。

2)設置 SPI 工作模式。

3)使能 SPI。

程序在開機的時候會檢測 W25X16 是否存在,如果不存在則會在TFTLCD 模塊上顯示錯誤信息,同時LED0 慢閃。大家可以通過跳線帽把PA5 和PA6 短接就可以看到報錯了。通過本實驗,我掌握了編寫SPI程序寫入和讀取FLASH的方法,掌握了對學會對的W25Q64讀寫操作。對STM32開發板有了進一步的了解。

實驗二十一 紅外遙控實驗

一. 實驗簡介

編程實現通過在 ALIENTEK MiniSTM32 開發板上實現紅外遙控器的控制。

二.實驗目的

掌握編程實現紅外遙控控制開發板的方法。

三.實驗內容

1.編寫紅外遙控驅動程序 2.編寫紅外遙控程序代碼 3.使用紅外遙控控制開發板

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件。

五.實驗步驟

4.編寫紅外遙控驅動程序 5.編寫紅外遙控程序代碼

6.編譯代碼,使用JLINK或ISP下載到實驗板 7.記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

使用串口調試助手觀察數據

七.實驗總結

紅外遙控是一種無線、非接觸控制技術,具有抗干擾能力強,信息傳輸可靠,功耗低,成本低,易實現等顯著優點,被諸多電子設備特別是家用電器廣泛采用,并越來越多的應用到計算機系統中。

通過本節實驗,我學習到了如何編程使用紅外遙控控制,在本程序中只是簡單地輸出一個數值,在以后的應用中可以實現更強大的功能,比如用紅外遠程輸入控制開發板進行一些操作。對STM32有了進一步的認識。

實驗二十二 DS18B20實驗

一. 實驗簡介

一. 在ALIENTEK MiniSTM32 開發板上,通過 DS18B20 來讀取環境溫度值。

二.實驗目的

鞏固SPI編程。掌握使用感應器獲取環境溫度的方法。

三.實驗內容

1.復位脈沖和應答脈沖

2.寫時序

3.讀時序

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件。

五.實驗步驟

1.2.3.4.參考教材DS18B20編程部分,編寫DS18B20驅動程序 編寫主程序

編譯代碼,使用JLINK或ISP下載到實驗板 記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

使用串口調試助手觀察數據:

七.實驗總結

DS18B20 是由 DALLAS 半導體公司推出的一種的“一線總線”接口的溫度傳感器。與傳統的熱敏電阻等測溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口簡單的數字化溫度傳感器。

通過本次實驗,我認識到STM32的強大,在開發板上可以添加其他感應器從而實現更強大的功能。添加了DS18B20后的開發板可以感應外界的溫度,通過公式計算顯示出來。

第三篇:嵌入式實驗報告

嵌入式系統及應用課 程設計報告

姓名:陳宥祎

班級:14級計算機01班 學號:1255010116 指導老師:黃衛紅

按鍵輸入實驗

一.實驗簡介

在實驗一的基礎上,使用按鍵控制流水燈速度,及使用按鍵控制流水燈流水方向。

二.實驗目的

熟練使用庫函數操作GPIO,掌握中斷配置和中斷服務程序編寫方法,掌握通過全局變量在中斷服務程序和主程序間通信的方法。

三.實驗內容

實現初始化GPIO,并配置中斷,在中斷服務程序中通過修改全局變量,達到控制流水燈速度及方向。

使用JLINK下載代碼到目標板,查看運行結果,使用JLINK在線調試。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK、示波器。軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件。

五.實驗步驟

1在實驗1代碼的基礎上,編寫中斷初始化代碼

2在主程序中聲明全局變量,用于和中斷服務程序通信,編寫完成主程序 3編寫中斷服務程序

4編譯代碼,使用JLINK下載到實驗板 5.單步調試

6記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

我們將通過MiniSTM32 板上載有的3個按鈕,來控制板上的2個LED,其中KEY0控制LED0,按一次亮,再按一次,就滅。KEY1 控制LED1,效果同KEY0。KEY_2(KEY_UP),同時控制LED0 和LED1,按一次,他們的狀態就翻轉一次。

七.實驗總結

通過本次實驗,我學會了如何使用STM32 的IO 口作為輸入用。TM32 的IO 口做輸入使用的時候,是通過讀取IDR 的內容來讀取IO 口的狀態的。這里需要注意的是 KEY0 和KEY1 是低電平有效的,而WK_UP 是高電平有效的,而且要確認WK_UP 按鈕與DS18B20 的連接是否已經斷開,要先斷開,否則DS18B20 會干擾WK_UP按鍵!并且KEY0 和KEY1 連接在與JTAG 相關的IO 口上,所以在軟件編寫的時候要先禁用JTAG 功能,才能把這兩個IO 口當成普通IO 口使用。

串口通信

一.實驗簡介

編寫代碼實現串口發送和接收,將通過串口發送來的數據回送回去。

二.實驗目的

掌握STM32基本串口編程,進一步學習中斷處理。

三.實驗內容

編寫主程序,初始化串口1,設置波特率為9600,無校驗,數據位8位,停止位1位。編寫中斷服務程序代碼實現將發送過來的數據回送。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK、示波器。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1編寫串口初始化代碼

2編寫中斷服務程序代碼

3編譯代碼,使用JLINK或ISP下載到實驗板 4記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

把代碼下載到 MiniSTM32 開發板,可以看到板子上的LED0 開始閃爍,說明程序已經在跑了。接著我們打開串口調試助手,看到如下信息:

證明串口數據發送沒問題。接著,我們在發送區輸入上面的文字,輸入完后按回車鍵。然后單擊發送,可以得到如下結果:

七.實驗總結

通過本次實驗,我進一步了解了串口的使用,學會了通過串口發送和接收數據,將通過串

口發送來的數據回送回去。該實驗的硬件配置不同于前兩個實驗,串口 1 與USB 串口默認是分開的,并沒有在PCB上連接在一起,需要通過跳線帽來連接一下。這里我們把P4 的RXD 和TXD 用跳線帽與P3 的PA9 和PA10 連接起來。

外部中斷

一.實驗簡介

STM32 的 IO 口在本章第一節有詳細介紹,而外部中斷在第二章也有詳細的闡述。這里我們將介紹如何將這兩者結合起來,實現外部中斷輸入。

二.實驗目的

進一步掌握串口編程,進一步學習外部中斷編程,提高編程能力。

三.實驗內容

初始化IO口的輸入,開啟復用時鐘,設置IO與中斷的映射關系,從而開啟與IO口相對應的線上中斷事件,設置觸發條件。配置中斷分組(NVIC),并使能中斷,編寫中斷服務函數。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK、示波器。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1.2.3.4.編寫中斷服務程序代碼 使用ISP下載到實驗板 測試運行結果

記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

打開串口助手。

七.實驗總結

首先需要將IO設置為中斷輸入口: 1)初始化 IO 口為輸入。

2)開啟 IO 口復用時鐘,設置 IO 口與中斷線的映射關系。

3)開啟與該 IO口相對的線上中斷/事件,設置觸發條件。

4)配置中斷分組(NVIC),并使能中斷。

5)編寫中斷服務函數。

這一節,使用的是中斷來檢測按鍵,通過 WK_UP 按鍵實現按一次 LED0 和 LED 1 同時翻轉,按 KEY0 翻轉 LED0,按 KEY1 翻轉 LED1。試驗中外部中斷函數不能進入的原因分析 : 1)GPIO或者AFIO的時鐘沒有開啟。2)GPIO和配置的中斷線路不匹配。3)中斷觸發方式和實際不相符合。

4)中斷處理函數用庫函數時,寫錯,經常可能出現數字和字母之間沒有下劃線。5)外部中斷是沿觸發,有可能不能檢測到沿,比如 中斷線是低電平(浮空輸入),觸發是下降沿觸發,可能會出現一直是低電平,高電平的時候是一樣的情況,電平持續為高電平。

6)沒有用軟件中斷來觸發外部中斷,調用函數EXTI_GenerateSWInterrupt;,因為軟件中斷先于邊沿中斷處理。

獨立看門狗實驗

一. 實驗簡介

獨立看門狗(IWDG)由專用的低速時鐘(LSI)驅動,即使主時鐘發生故障它也仍然有效。窗口看門狗由從APB1時鐘分頻后得到的時鐘驅動,通過可配置的時間窗口來檢測應用程序非正常的過遲或過早的操作。

二.實驗目的

通過編程,編寫一個獨立看門狗驅動程序

三.實驗內容

啟動 STM32 的獨立看門狗,從而使能看門狗,在程序里面必須間隔一定時間喂狗,否則將導致程序復位。利用這一點,我們本章將通過一個 LED 燈來指示程序是否重啟,來驗證 STM32 的獨立看門狗。

四.實驗設備

硬件部分:PC計算機(宿主機)、亮點STM32實驗板、JLINK。

軟件部分:PC機WINDOWS系統、MDK KEIL軟件、ISP軟件、串口調試助手。

五.實驗步驟

1.2.3.4.參考教材獨立看門狗部分,編寫獨立看門狗驅動程序。建立和配置工程 編寫代碼

使用ISP下載到實驗板

記錄實驗過程,撰寫實驗報告

六.實驗結果及測試

源代碼:

在配置看門狗后,看到LED0 不停的閃爍,如果WK_UP 按鍵按下,就喂狗,只要WK_UP 不停的按,看門狗就一直不會產生復位,保持LED0 的常亮,一旦超過看門狗定溢出時間(Tout)還沒按,那么將會導致程序重啟,這將導致LED0 熄滅一次。

七.實驗總結

通過本次實驗,我掌握了啟動獨立看門狗的步驟: 1)向 IWDG_KR 寫入 0X5555。2)向 IWDG_KR 寫入 0XAAAA。3)向 IWDG_KR 寫入 0XCCCC。

通過上面 3個步驟,啟動 STM32 的看門狗,從而使能看門狗,在程序里面就必須間隔一定時間喂狗,否則將導致程序復位。利用這一點,本章通過一個LED 燈來指示程序是否重啟,來驗證 STM32 的獨立看門狗。在配置看門狗后,LED0 將常亮,如果 WK_UP 按鍵按下,就喂狗,只要 WK_UP 不停的按,看門狗就一直不會產生復位,保持 LED 0 的常亮,一旦超過看門狗溢出時間(Tout)還沒按,那么將會導致程序重啟,這將導致 LED 0 熄滅一次。

第四篇:嵌入式實驗報告

西安郵電大學

嵌入式處理器及應用實驗報告書

學院名稱學生姓名專業名稱班

: : : :

實驗一

ADS 1.2 集成開發環境練習

一、實驗目的:

了解ADS 1.2 集成開發環境的使用方法。

二、實驗內容:

1.建立一個新的工程。

2.建立一個C源文件,并添加到工程中。3.設置文本編輯器支持中文。4.編譯鏈接工程。5.調試工程。

三、實驗步驟:

1.啟動ADS 1.2 IDE集成開發環境,選擇File—New,使用ARM Executable Image工程模板建立一個工程,工程名稱為ADS。

2.選擇File—New建立一個新的文件TEST1.S,設置直接添加到項目中,輸入程序代碼。3.由于ADS安裝后默認字體是Courier New,對于中文支持不完善,因此建議修改字體。選擇Edit—Perferences,在Font選項設置字體為Fixedsys,Script為CHINESE_GB2312。建議在Tab Inserts Spaces前打勾,使Tab鍵插入的是多個空格。

4.選擇Edit—DebugRel Settings,在DebugRel Settings對話框的左邊選擇ARM Linker項,然后在Output頁設置連接地址ROBase 為0x40000000,RW Base 為0x40003000,在Options頁設置調試入口地址Image entry point 為 0x40000000。5.選擇Project—Make,將編譯鏈接整個工程。

6.選擇Project—Debug,或單擊快捷鍵F5,IDE環境就會啟動AXD調試軟件。

四、程序清單:

AREA

Example1,CODE,READONLY

;聲明代碼段Example1

ENTRY

;標識程序入口

CODE32

;聲明32 位ARM 指令

START

MOV

R0,#15

;設置參數

MOV

R1,#8

ADDS

R0,R0,R1

;R0 = R0 + R1

B

START

END

五、心得體會:

通過本次實驗,我熟悉了ADS 1.2 集成開發環境,學會了怎樣建立工程,在工程里面建立文件和進行最基本的運行操作。我感觸最深的是每次軟件的開始使用是最關鍵的,想要掌握一個軟件的使用必須進行多次的練習,多練幾遍自然而然的會熟練的操作。

實驗二

存儲器訪問指令練習實驗

一、實驗目的:

1.了解ADS 1.2 集成開發環境及ARMulator軟件仿真。

2.掌握ARM7TDMI匯編指令的用法,并能編寫簡單的匯編程序。3.掌握指令的條件執行以及使用LDR/STR指令完成存儲器的訪問。

二、實驗內容:

1.使用LDR指令讀取0x40003100上的數據,將數據加1,若結果小于10,則使用STR指令把結果回寫原地址;若結果大于或等于10,則把0寫回原地址。

2.使用ADS 1.2軟件仿真,單步、全速運行程序,設置斷點,打開寄存器窗口(Processor Registers)監視R0和R1的值,打開存儲器觀察窗口(Memory)監視0x40003100上的值。

三、實驗步驟:

1.啟動ADS 1.2,使用ARM Executable Image工程模板建立一個工程Instruction2。2.建立匯編源文件TEST2.S,編寫實驗程序,然后添加到工程中。

3.設置工程鏈接地址ROBase 為0x40000000,RW Base 為0x40003000。設置調試入口地址Image entry point 為 0x40000000。

4.編譯鏈接工程,選擇Project —Debug,啟動AXD進行軟件仿真調試。

5.打開寄存器窗口(Processor Registers),選擇Current 項監視R0和R1的值。打開存儲器觀察窗口(Memory)設置觀察地址為0x40003100,顯示方式Size為32Bit,監視0x40003100地址上的值。

四、程序清單:

COUNT

EQU

0x40003100

;定義一個變量,地址為0x40003100

AREA

Example2,CODE,READONLY;聲明代碼段Example2

ENTRY

;標識程序入口

CODE32

;聲明32 位ARM 指令

START

LDR

R1,=COUNT

;R1 <= COUNT

MOV

R0,#0

;R0 <= 0

STR

R0,[R1]

;[R1] <= R0,即設置COUNT 為0

LOOP

LDR

R1,=COUNT

LDR

R0,[R1]

;R0 <= [R1]

ADD

R0,R0,#1

;R0 <= R0 + 1

CMP

R0,#10

;R0 與 10 比較,影響條件碼標志

MOVHS

R0,#0

;若R0 大于等于 10,則此指令執行,R0 <= 0

STR

R0,[R1]

;[R1] <= R0,即保存COUNT

B

LOOP

END

五、心得體會:通過本次實驗,讓我更深一步的了解了ADS 1.2 集成開發環境及ARMulator軟件仿真。通過對程序的解讀,我掌握一些匯編指令的寫法,同時也提高了我的讀程序的能力。本次實驗中我遇到了一個問題,在工程里加載文件的時候,沒注意文件的后綴應為“。S”,結果造成文件加載失敗。

實驗三

數據處理指令練習實驗

一、實驗目的:

1.掌握ARM數據處理指令的使用方法。2.了解ARM指令靈活的第2個操作數。

二、實驗內容:

1.使用MOV和MVN指令訪問ARM通用寄存器。

2.使用ADD、SUB、AND、ORR、CMP和TST等指令完成數據加減運算及邏輯運算。

三、實驗步驟:

1)啟動ADS1.2,使用ARM Executable Image 工程模板建立一個工程Instruction3。2)建立匯編源文件TEST3.S ,編寫實驗程序,然后添加到工程中。

3)設置工程鏈接地址RO Base為0x40000000,RW Base為0x40003000。設置調試入口地址Image entry point 為 0x40000000。

4)編譯鏈接工程,選擇Project —Debug,啟動AXD進行軟件仿真調試。5)打開寄存器窗口(Processor Registers),選擇Current 項監視各寄存器的值。6)單步運行程序,觀察寄存器值的變化。

四、程序清單:

X

EQU

;定義X 的值為11

Y

EQU

;定義Y 的值為8

BIT23

EQU

(1<<23)

;定義BIT23 的值為0x00800000

AREA

Example3,CODE,READONLY

;聲明代碼段Example3

ENTRY

;標識程序入口

CODE32

;聲明32 位ARM 指令

START

;使用MOV、ADD 指令實現:R8 = R3 = X + Y

MOV

R0,#X

;R0 <= X,X 的值必須是8 位圖數據

MOV

R1,#Y

;R1 <= Y,Y 的值必須是8 位圖數據

ADD

R3,R0,R1

;即是R3 = X + Y

MOV

R8,R3

;R8 <= R3

;使用MOV、MVN、SUB 指令實現:R5 = 0x5FFFFFF8y;

;

break;

;

case

7: x = key * y;

;

break;

;

default: x = 168;

SWITCH

CASE_0

CASE_2

CASE_3

CASE_5

CASE_7

;

break;;};設x 為R0,y 為R1,key 為R2(x、y、key 均為無符號整數)MOV

R1,#3

;初始化y 的值

MOV

R2,#2

;初始化key 的值

AND

R2,R2,#0x0F

;switch(key&0x0F)

CMP

R2,#0

;case 0:

CMPNE

R2,#2

;case 2:

MPNE

R2,#3

;case 3:

BNE

CASE_5

ADD

R0,R2,R1

;

x = key + y

B

SWITCH_END

;

break

CMP

R2,#5

;case 5:

BNE

CASE_7

SUB

R0,R2,R1

;

x = key1)*4 SvcStackSpace +(SVC_STACK_LEGTH1)*4 FiqStackSpace +(FIQ_STACK_LEGTH1)*4

UndtStackSpace +(UND_STACK_LEGTH-1)*4

;分配堆棧空間

AREA

MyStacks, DATA, NOINIT, ALIGN=2

UsrStackSpace

SPACE

USR_STACK_LEGTH * 4

;用戶(系統)模式堆棧空間

SvcStackSpace

SPACE

SVC_STACK_LEGTH * 4

;管理模式堆棧空間

IrqStackSpace

SPACE

IRQ_STACK_LEGTH * 4

;中斷模式堆棧空間

FiqStackSpace

SPACE

FIQ_STACK_LEGTH * 4

;快速中斷模式堆棧空間

AbtStackSpace

SPACE

ABT_STACK_LEGTH * 4

;中止義模式堆棧空間

UndtStackSpace

SPACE

UND_STACK_LEGTH * 4

;未定義模式堆棧

END

五、心得體會:通過本次實驗,我較好的掌握了如何使用MRS/MSR指令實現ARM微控制器工作模式的切換。較好的了解了在各個工作模式下的寄存器。

實驗六

C語言程序實驗

一、實驗目的:

通過實驗了解使用ADS 1.2編寫C語言程序,并進行調試。

二、實驗內容:

編寫一個匯編程序文件和一個C程序文件。匯編程序的功能是初始化堆棧指針和初始化C程序的運行環境,然后跳轉到C程序運行,這就是一個簡單的啟動程序。C程序使用加法運算來計算1+2+3+…+(N-1)+N的值(N為0時,結果為0;N為1時,結果為1)。

三、實驗步驟:

1.啟動ADS1.2,使用ARM Executable Image 工程模板建立一個工程ProgramC。2.建立匯編源文件Startup.s和Test.c,編寫實驗程序,然后添加到工程中。

3.設置工程鏈接地址RO Base為0x40000000,RW Base為0x40003000。設置調試入口地址Image entry point 為 0x40000000。

4.設置位于開始位置的起始代碼段:選擇Edit—DebugRel Settings,在DebugRel Settings對話框的左邊選擇ARM Linker項,然后在Layout頁設置Object/Symbol為Startup.o,Section為Start。

5.編譯鏈接工程,選擇Project—Debug,啟動AXD進行軟件仿真調試。6.在Startup.s的“B Main”處設置斷點,然后全速運行程序。

7.程序在斷點處停止。單步運行程序,判斷程序是否跳轉到C程序中運行。

選擇Processor Views—Variables打開變量觀察窗口,觀察全局變量的值,然后單步/全速運行程序,判斷程序的運算結果是否正確。

四、程序清單:

#define uint8

unsigned char

#define uint32

unsigned int

#define N

uint32 sum;

// 使用加法運算來計算 1+2+3+...+(N-1)+N 的值。(N>0)

void Main(void)

{ uint32 i;

sum = 0;

for(i=0;i<=N;i++)

{ sum += i;

}

while(1);

}

程序清單3.9

簡單的起動代碼

;起動文件。初始化 C 程序的運行環境,然后進入C 程序代碼。

IMPORT

|Image$$RO$$Limit|

IMPORT

|Image$$RW$$Base|

IMPORT

|Image$$ZI$$Base|

IMPORT

|Image$$ZI$$Limit|

IMPORT

Main

;聲明C 程序中的Main()函數

AREA

Start,CODE,READONLY

;聲明代碼段Start

ENTRY

;標識程序入口

CODE32

;聲明32 位ARM 指令

Reset

LDR

SP,=0x40003F00

;初始化C 程序的運行環境

LDR

R0,=|Image$$RO$$Limit|

LDR

R1,=|Image$$RW$$Base|

LDR

R3,=|Image$$ZI$$Base|

CMP

R0,R1

BEQ

LOOP1

LOOP0

CMP

R1,R3

LDRCC

R2,[R0],#4

STRCC

R2,[R1],#4

BCC

LOOP0

LOOP1

LDR

R1,=|Image$$ZI$$Limit|

MOV

R2,#0

LOOP2

CMP

R3,R1

STRCC

R2,[R3],#4

BCC

LOOP2

B

Main

;跳轉到 C 程序代碼Main()函數

END

五、心得體會:通過本次實驗,我學會并掌握使用ADS 1.2編寫C語言程序,并進行調試。這次實驗不同于前幾次,必須在一個工程里面同時加載兩個文件,分別是“。c”和“.s”文件。

第五篇:嵌入式實驗報告

北京科技大學

黃強

41050176

嵌入式實驗報告

實驗一 建立并編譯WinCE平臺

【實驗目的】

掌握PB下WinCE平臺的定制 【實驗內容】

開始利用Platform Builder定制平臺并編譯 【實驗流程】

1. 將OURS-PXA270-EP實驗箱的電源線、串口、網線、同步線、鼠標等全部連接。

2. 由于已經安裝好了BSP,我們可以直接打開Platform Builder5.0。3. 新建Platform Builder工程,在建立向導中進行名稱、路徑、BSP選擇、設計模板、可選項目等的設置,完成WinCE平臺的建立。

北京科技大學

黃強

41050176 4. 設置編譯平臺的參數。

5. 構建新建里的WinCE平臺的運行時映像。整個過程大約持續20分鐘,構建成功后得到操作系統運行時的映像。【實驗結果】 見nk.bin 【小結】

通過這個實驗,我們初步接觸了PXA270EP實驗箱,并通過Platform的建立,對Platform Builder有了一個初步了解,同時也對嵌入式開發的過程有了一個初步認識,掌握了PB下WinCE平臺的定制。

實驗二 定制增強型內核

【實驗目的】

1.熟悉Platform Builder集成開發環境以及相關配置

·使用模板創建新平臺 ·添加和刪除組件 ·配置和運行平臺

2.利用Platform Builder定制一個增強型內核,并下載到內存中。【實驗內容】

參照本實驗指導書的步驟,定制一個包括Word(支持中文輸入法)、圖片瀏覽器、MediaPlayer、支持USB鼠標、鍵盤,并能通過USB從設備接口進行宿主機與目標版通信的內核。

北京科技大學

黃強

41050176 【實驗流程】

1.打開已創建好的PB,在PB右邊的Catalog中添加其他組件。這里我們所做的與實驗指導書上的不同,為了更好的配合我們的實驗,我們所添加的內容有: ·Third Party-BSPs-OURS PXA270-Device Drivers-OEM Devices下所有內容。·Platform Manager ·Third Party-BSPs-OURS PXA270-Device Drivers-USB Host-USB Host Controllers-PXA270x USB Host{OHC} ·Core OS-Windows CE devices-Core OS Services-USB Host Support-USB HID-USB HID Keyboard and Mouse ·Third Party-BSPs-OURS PXA270-Device Drivers-Input Devices-Keyboard/Mouse-OURS270 KEYPAD Driver ·Third Party-BSPs-OURS PXA270-Device Drivers-Networking-LAN devices-OURS270 LAN91C111 Driver 2.選擇Build OS|Sysgn開始構建,編譯的結果生成了Eboot和NK.bin映像文件。

3.在終端進行配置。打開“超級終端”進行連接端口、波特率、數據流控制等的設置,此時會彈出名為11520的超級終端的窗口。

4.打開實驗箱電源,此時窗口里會出現字符,快速按空格鍵。

5.當完成Eboot配置后,按下D,準備下載內核的映像文件NK.bin到實驗箱上。6.再進行PB里面的目標設備的配置。7.對映像文件進行下載。

映像文件傳輸完成后,Eboot會根據設置,自動燒寫到內存中,完成燒寫以后,WinCE會自動啟動。至此,一個功能較強的內核定制成功了。【實驗結果】 略 【小結】

經過這個實驗,我熟悉了Platform Builder集成開發環境以及相關配置,雖然剛開始不知道這些配置有什么用,后來在老師的講解下才漸漸明白,這些配置是為了后續的編程做準備的。

北京科技大學

黃強

41050176

實驗三 定制SDK并建立EVC下的開發環境

【實驗目的】

熟悉SDK的概念,配置EVC下的開發環境 【實驗內容】

生成SDK并安裝,配置Embedded Visual C++的開發環境 【實驗流程】

1. 在已經建立好的PB中,新建一個SDK文件。2. 按步驟完成SDK的配置

3. 點擊Build SDK 這個過程大概要3分鐘,在指定目錄下生成SDK文件。4. 安裝剛生成的SDK,之后即可在此模擬器上運行開發好的應用程序。【實驗結果】

北京科技大學

黃強

41050176 見SDK文件

【小結】

SDK的概念其實對我們來說還是相對陌生的,在實驗的過程中由于概念不了解我們并不太清晰的知道我們在做什么,直到我們查閱并了SDK的相關概念后才有所收獲。SDK實際上是一個開發工具包,我們根據自己的開發需要,針對于自己的PB定制了一個專用開發工具包來便于我們的模擬開發。經過這個實驗,我們了解了更多關于軟件開發的知識,接觸到了許多課堂上所學不到的內容,受益匪淺。

實驗五 建立宿主機與實驗箱的連接

【實驗目的】

學習并掌握利用SMSC91C111網口建立宿主機與實驗箱的連接 【實驗內容】

利用SMSC91C111網口建立宿主機與實驗箱的連接 【實驗設備】

1.OURS-PXA270-EP實驗儀,燒錄有WINCE的Flash,交叉網線,USB數據線。2.PC操作系統,Platform Builder5.0集成開發環境。【實驗步驟】

1.在PB的菜單下,點Remote File Viewer擊。

北京科技大學

黃強

41050176 2.在彈出的“Windows CE Remote File Viewer”界面中,選擇“Configure Connection”按鈕,進入下一個畫面。

3.選好目標設備,并單擊右邊的“Properties”按鈕。

4.在彈出的對話框“Device Properties”中如下圖所示設置,單擊“Transport”下拉框右邊的“Configure...”按鈕。

5.在彈出的對話框“Transport Configuration”中可以設置超時值、端口號、主機IP等。

6.設置完畢后,打開實驗箱電源,啟動WinCE平臺,將宿主機與實驗箱網口用交叉線連接號,點擊“Text”按鈕。

7.點擊Text按鈕后,出現所示窗口,它的意思是說,在試驗箱的命令行中鍵入“CEMGRC.EXE/S /T:TCPIPC.DLL /Q /D:192.168.0.21:5000”(其中IP地址是自己宿主機的IP地址),完成此項操作后,點擊OK。

8.在實驗箱的CE系統中,設置IP地址與宿主機地址在同一網段內。具體操作為:在實驗箱的CE系統“開始”菜單中點擊運行命令,鍵入命:CEMGRC.EXE/S /T:TCPIPC.DLL /Q /D:192.168.0.21:5000,然后點擊OK。如果PC機上再出現運行CEMGRC.EXE/S /T:TCPIPC.DLL /Q /D:192.168.0.21:5000的提示,重復上述步驟,便會出現如下界面,點擊Export按鈕(黃色按鈕),可上傳文件。9.如下圖所示,可瀏覽遠程文件,并指定上傳文件,選中文件后,點擊“打開”按鈕。

10.成功上傳文件,可以在實驗設備上看到上傳的文件。11.至此,利用SMSC91C111網口建立連接完畢。【實驗結果】

實驗失敗 【小結】

通過這次試驗,我們掌握了利用SMSC91C111網口建立宿主機與實驗箱的連接的方法,實驗中要求IP地址與宿主機地址在同一網段,實驗中解決了這個問題,讓我們對網絡相關的概念也加深了理解。經過多次試驗,我們還是無法連通宿主機與實驗箱,我認為我們的步驟沒有問題,可能是設備有故障。

北京科技大學

黃強

41050176

實驗六 USB Device建立宿主機與實驗箱的連接

【實驗目的】

學習并掌握利用USB Device建立宿主機與實驗箱的連接 【實驗內容】

利用USB Device建立宿主機與實驗箱的連接 【實驗設備】

1.OURS-PXA270-EP實驗儀,燒錄有WINCE的Flash,交叉網線,USB數據線。2.PC操作系統,Platform Builder5.0集成開發環境。【實驗步驟】

北京科技大學

黃強

41050176 1.ActiveSync安裝

Microsoft ActiveSync允許您使用電纜、底座或紅外線在移動設備和桌面計算機之間建立合作關系。建立合作關系后,如果您的設備支持調制解調器或(以太網)卡,就可以使它們同步數據。通過ActiveSync還可以使用現有計算機連接其他資源,也可以使用ActiveSync保持兩臺計算機上擁有最新信息。

首先在主機端安裝ActiveSync程序。該程序安裝在D:科大目錄下的ActiveSyncsetup.smi。雙擊該文件開始安裝。

2.用USB延長線連接試驗箱和PC,當PC發現新設備時安裝附帶的驅動,安裝完成后,打開Microsoft ActiveSync窗口進行連接。

選擇“否”然后點擊行“下一步”按鈕。

3.在“我的電腦”中添加“我的設備”,它對應于目標系統的WINCE文件系統。注意:

如果WINCE運行以前USB線已經連接到PC機的USB插座,可能導致連接不上,此時,請將USB線拔下然后重新插入即可。4.通訊

在上圖我的電腦中雙擊“我的設備”將打開WINCE同步目錄,可以和操作WINDOWS其他目錄一樣操作該目錄,包括拷貝文件到該目錄或見文件從該目錄拷貝到PC機。

文件拷貝成功,可以成功將應用程序下載到試驗箱運行,這樣我們就完成了宿主機與實驗箱的通訊連接。【實驗結果】

北京科技大學

黃強

41050176

【小結】

通過實驗,我們掌握了利用USB Device建立宿主機與實驗箱的連接的具體方法,并且連接成功,與上一個方法比較,該方法簡單實用,成功率高,適合我們選用。

實驗七 在實驗箱的WinCE平臺上的Hello World實驗

【實驗目的】

北京科技大學

黃強

41050176 1.熟悉EVC集成開發環境以及相關配置。2.利用EVC編寫WinCE的應用程序。【實驗內容】

參照本實驗指導書的步驟,一步一步完成實驗,編寫、編譯并運行HelloWorld程序 【實驗設備】

1.OURS-PXA270—EP實驗儀,交叉網線。

2.PC操作系統,Platform Builder4.2集成開發環境,eMbedded Visual C++集成開發環境。【實驗結果】

【小結】

這是我首次接觸EVC集成開發環境,感覺有點陌生,但按照實驗指導書一步一步做下去之后,我終于對EVC集成開發環境有了初步的了解,收獲很大。

實驗八 LED數碼管驅動

【實驗目的】

北京科技大學

黃強

41050176 1.熟悉EVC集成開發環境以及相關配置 2.利用EVC編寫一個針對實際硬件的驅動程序 【實驗內容】

編寫一個針對硬件的驅動程序,硬件是LED 【實驗設備】

PC機操作系統,Platform Builder集成開發環境,OURS—PXA270-EP實驗箱。

【實驗步驟】

1.使用前面實驗所制作的內核 2.按照實驗指導書上添加窗口及代碼 3.測試與調試 【實驗結果】

北京科技大學

黃強

41050176

【小結】

經過本次實驗,我熟悉了EVC集成開發環境以及相關配置,在EVC中編寫了一個程序,通過實驗,對開發環境有了更深入地了解,為日后的課程設計打下了堅實的基礎。

下載嵌入式實驗報告word格式文檔
下載嵌入式實驗報告.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    嵌入式實驗報告

    計算機專業類課程 實驗報告 課程名稱:嵌入式微處理器系統及應用 學 院:計算機科學與工程 專 業:計算機科學與技術 學生姓名:廖雪平學 號:2011060120003 指導教師:陳麗蓉 日 期:201......

    嵌入式實驗報告

    《嵌入式Linux實驗開發》 ——實驗二、安裝和備份Linux 系統 ——實驗三、ADS 集成開發環境的使用 ——實驗四、在虛擬機中安裝linux ——實驗五、虛擬機和主機數據通信......

    嵌入式實驗報告二(精選合集)

    嵌入式 實驗報告二 二實驗時間 2013/6/9 報告人一、實驗目的:1.學習cygwin; 2.通過上機實驗,使學生驗證、鞏固和充實所學理論知識,加深對相關內容的理解,了解嵌入式 Linux 的工具......

    浙工大 嵌入式實驗報告

    金艷霞 通信2班201203110210 實驗五 Linux交叉編譯平臺 一、 實驗目的 1. 掌握一些基本的linux讀寫操作 2. 利用vcc編譯c程序 3. 通過nfs掛載到實驗箱中,利用交叉編譯執行文......

    嵌入式操作系統實驗報告

    實驗一 嵌入式開發環境的建立 一、實驗目的 通過此實驗系統,讀者可以了解嵌入式實時操作系統 uC/OS-II 的內核機制和運行原理。本實驗系統展示了 uC/OS-II 各方面的管理功能,......

    嵌入式系統實驗報告

    嵌入式系統實驗報告 學號: 姓 名: 班 級:13電子信息工程指導老師: 蘇州大學 電子信息學院 2016年12月 實驗一:一個燈的閃爍 1、實驗要求 實現PF6-10端口所連接的任意一個LED燈......

    嵌入式實驗報告五

    嵌入式實驗報告五實驗時間2013/6/9報告人一、實驗目的: 1.嵌入式文件燒寫; 2.通過上機實驗,使學生驗證、鞏固和充實所學理論知識,加深對相關內容的理解,了解嵌入式操作系統的鏡像文......

    嵌入式實驗報告(推薦五篇)

    ARM9嵌入式系統結構實驗報告 專業 電子信息工程 學號 666666 _ 姓名_ zzc____ __ 年月_ 2017.4 __ 實驗一 嵌入式開發環境的建立 一. 實驗目的 學習如何安裝試驗系統的軟件......

主站蜘蛛池模板: 国产成人无码av一区二区在线观看| 99久久成人精品国产网站| 国产猛男猛女超爽免费视频| 国产熟妇高潮叫床视频播放| 亚洲日韩在线中文字幕线路2区| 免费无码不卡中文字幕在线| 中文字幕精品亚洲无线码二区| 国产成人久久精品二区三区| 国产一区二区精品久久岳| 妺妺跟我一起洗澡没忍住| 国产欧美日韩va另类在线播放| 黑人玩弄人妻中文在线| 色悠久久久久综合欧美99| 日韩乱码人妻无码中文字幕久久| 亚洲欧美色一区二区三区| 国产00高中生在线无套进入| 亚洲综合精品伊人久久| 美女国产毛片a区内射| 强奷乱码中文字幕熟女一| 狠狠色噜噜狠狠狠狠色综合网| 亚洲日韩久久综合中文字幕| 国产在线精品一区二区在线观看| 精品国产乱码久久久软件下载| 日韩人妻无码精品免费shipin| 欧美熟妇乱子伦xx视频| 久久精品国产久精国产| 国产精品电影久久久久电影网| 亚洲av无码成人精品区| 东京热毛片无码dvd一二三区| 国产真人做爰毛片视频直播| 在线精品免费视频无码的| 亚洲精品av一区午夜福利| 亚洲国产精品线久久| 国产精品网站在线观看免费传媒| 亚洲午夜国产精品无码| 99精品国产丝袜在线拍国语| 亚洲欧美国产精品久久| 亚洲精品久久久久国色天香| 国产亚洲精品久久久久久国| 小??戳进?无遮视频| 亚洲系列一区中文字幕|