當前位置:萬佳範文網 >

工作報告 >實驗報告 >

嵌入式實驗四實驗報告

嵌入式實驗四實驗報告

3.4基於UART的加法器的實現

嵌入式實驗四實驗報告

一、實驗目的

學習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、 書寫實驗報告,要求附上程序流程圖。

六、實驗心得

比較輪詢方式與中斷方式

  • 文章版權屬於文章作者所有,轉載請註明 https://wjfww.com/baogao/shiyan/eyoyw.html