嵌入式实验四实验报告
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、 书写实验报告,要求附上程序流程图。
六、实验心得
比较轮询方式与中断方式
-
心电图测量的实验报告
【实验目的】1、了解心电测量的原理,并学习用生理信号计算机采集系统记录人体心电图。2、学习正常心电图中各波的命名与波形,了解其生理意义。3、学习利用心电图计量心率,P-R间期、Q-T间期等各项数值。【实验器械】RM6240生理信号计算机采集处理系统、数据输入连...
-
离心泵特性曲线测定实验报告范文
一、实验内容测定一定转速下离心泵的特性曲线。二、实验目的1.了解离心泵的结构特点,熟悉并掌握离心泵的工作原理和操作方法。2.掌握离心泵特性曲线测定方法。三、基本原理离心泵是工业上最常见的液体输送机械之一,离心泵的特性,通常与泵的结构、泵的转速以及所输...
-
实验报告范文合集(精选21篇)
实验报告范文合集篇1此次只实习了短短的三周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅,它不但极大地加深了我对一些理论知识的理解,不仅使我在理论上对Java有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对我...
-
锥体上滚的实验报告范文
篇一:锥体上滚实验今天老师给我们开了演示实验,让我们大开眼界,受益匪浅。在这节课里老师给我们演示了好多实验。最让我感兴趣的是锥体上滚。当我看到这个实验时,眼看着一个椎体从低处滚到高处并且不会在滚回来,感觉好神奇。这个设备是两根钢管由低到高的固定在一个...