嵌入式實驗四實驗報告

來源:果殼範文吧 1.21W

  一、實驗目的

嵌入式實驗四實驗報告

學習lm3s9b92的串列埠通訊

學習應用超級終端除錯串列埠

學會應用UART有關的庫函式

  二、實驗裝置

計算機、LM3S9B92開發板、USB A型公口轉 Mini B型 5Pin 資料線1 條

  三、實驗原理

Stellaris系列ARM的UART具有完全可程式設計、16C550型序列介面的特性。Stellaris系列ARM含有2至3個UART模組。

該指導書在第一部分的1.2節中說明,該開發板使用了FT2232晶片實現usb到串列埠的轉換。並設定在晶片的B通道上使用虛擬COM介面(VCP)。虛擬串列埠(VCP)與LM3s9b92上的UART0模組連線。在安裝FTDI驅動程式後,windows會分配一個序列通訊埠號到VCP通道,並允許windows應用程式(如超級終端)通過USB與LM3s9b92上的UART0進行通訊。 利用Windows超級終端除錯UART的方法

對於該開發板,使用的是USB虛擬的COM埠,無須使用DB9聯結器。因此下面講解一下如何利用Windows附帶的超級終端來除錯UART介面。

Windows附件裡的“超級終端”是個非常實用的應用程式,可以用來除錯電腦的COM序列口,也能很好地支援通過USB虛擬的COM口。以下是超級終端配置COM埠的'過程:

  四、實驗要求

採用超級終端作為外部輸入與輸出的介面,實現多位數的相加。即通過UART串列埠分別輸入需要相加的多位數A與B,最後把A和B兩個多位數相加的過程和結果,回顯給使用者。具體實現方法:既可以採用輪詢的方式也可以應用中斷。

  五、實驗步驟

1、 連線實驗裝置:使用USB mini B線纜的mini端與開發板ICDI口相連,另一端接到PC機的USB插口上。

2、 根據實驗要求編寫、除錯、執行程式。並要求在程式碼上附上相關的註釋。

#include

#include "inc/hw_ints.h"

#include "inc/hw_memmap.h"

#include "inc/hw_types.h"

#include "driverlib/debug.h"

#include "driverlib/gpio.h"

#include "driverlib/interrupt.h"

#include "driverlib/sysctl.h"

#include "driverlib/uart.h"

#include "grlib/grlib.h"

#include "drivers/kitronix320x240x16_ssd2119_8bit.h"

#include "drivers/set_pinout.h"

#include "systemInit.h"

void uartInit(void)

{

SysCtlPeriEnable(SYSCTL_PERIPH_UART0); // 使能UART模組

SysCtlPeriEnable(SYSCTL_PERIPH_GPIOA); // 使能RX/TX所在的GPIO埠 GPIOPinTypeUART(GPIO_PORTA_BASE, // 配置RX/TX所在管腳為

GPIO_PIN_0 | GPIO_PIN_1); // UART收發功能

UARTConfigSet(UART0_BASE, // 配置UART埠

9600, // 波特率:9600

UART_CONFIG_WLEN_8| // 資料位:8

UART_CONFIG_STOP_ONE | // 停止位:1

UART_CONFIG_PAR_NONE); // 校驗位:無

UARTEnable(UART0_BASE); // 使能UART埠

}

void uartPuts(const char *s)

{

while (*s != '')

{

UARTCharPut(UART0_BASE, *(s++));

}

}

main(void)

{

char c,a[12];

int sum=0,num=0,i;

// jtagWait( ); // 防止 JTAG 失效,重要!

clockInit( ); // 時鐘初始化:晶振, 6MHz

uartInit( ); // UART 初始化

uartPuts("輸入格式 m+n= ");

for (;;)

{

c = UARTCharGet(UART0_BASE); // 等待接收字元

if(c>='0'&&c<='9')//判斷收到的是否為字元{

num=num*10+c-'0'; //將收到的字元轉換為整形儲存 }

else if(c=='+'){ //接收第二個數 sum=sum+num;

num=0;

}

else if(c=='=') //輸出

{

sum=sum+num;

num=0;

for(i=0;sum!=0;i++)

{

a[i]=sum%10;

sum=(sum-a[i])/10;

}

for(i--;i>=0;i--){

UARTCharPut(UART0_BASE, a[i]+'0'); }

UARTCharPut(UART0_BASE, ' '); }

if (c == ' ') // 如果遇到回車

{

UARTCharPut(UART0_BASE, ' '); // 多回顯一個換行}

}

}

3、 書寫實驗報告,要求附上程式流程圖。

  六、實驗心得

比較輪詢方式與中斷方式

熱門標籤