嵌入式實驗四實驗報告
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、 書寫實驗報告,要求附上程序流程圖。
六、實驗心得
比較輪詢方式與中斷方式
-
汽車銷售頂崗實習報告範文模板
我們眼下的社會,報告的適用範圍越來越廣泛,報告包含標題、正文、結尾等。相信很多朋友都對寫報告感到非常苦惱吧,以下是小編爲大家收集的汽車銷售頂崗實習報告範文模板,僅供參考,歡迎大家閱讀。一、前言在本科專業教育中,實習是一個重要的實踐性教學環節。透過實習,能...
-
有關大學生暑期實習報告六篇
在生活中,報告的適用範圍越來越廣泛,其在寫作上有一定的技巧。那麼一般報告是怎麼寫的呢?下面是小編幫大家整理的大學生暑期實習報告6篇,歡迎大家分享。大學生暑期實習報告篇1專業認知實習作爲了解本專業的前景以及對本專業能夠有個系統整體感知的認識,尤其是我們電...
-
大學生暑假小學義務支教社會實踐調查報告
我們眼下的社會,越來越多的事務都會使用到報告,寫報告的時候要注意內容的完整。其實寫報告並沒有想象中那麼難,下面是小編收集整理的大學生暑假小學義務支教社會實踐調查報告,僅供參考,希望能夠幫助到大家。20xx年年暑假,爲了積極配合校團委科技三下鄉精神,豐富我院學...
-
建築專業畢業設計開題報告
艱苦的大學生活即將結束,大家馬上就要開始最難熬的畢業設計階段,一般做畢業設計前都會要求先寫開題報告,開題報告應該怎麼寫呢?下面是小編爲大家整理的建築專業畢業設計開題報告,希望對大家有所幫助。研究的現狀:金陽新區是近年來貴陽市的重點建設項目,新區的五星級酒...