嵌入式实验四实验报告
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、 书写实验报告,要求附上程序流程图。
六、实验心得
比较轮询方式与中断方式
重庆高考排名14250左右排位历史可以上哪些大学,具体能上什么大学
河北高考排名141780左右排位历史可以上哪些大学,具体能上什么大学
贵州高考排名122910左右排位文科可以上哪些大学,具体能上什么大学
河南高考排名13840左右排位文科可以上哪些大学,具体能上什么大学
四川电影电视学院和沈阳大学哪个好 附对比和区别排名
考浙江东方职业技术学院要多少分山西考生 附2024录取名次和最低分
云南高考排名44990左右排位理科可以上哪些大学,具体能上什么大学
黑龙江高考排名95680左右排位理科可以上哪些大学,具体能上什么大学
安徽高考排名91690左右排位理科可以上哪些大学,具体能上什么大学
岳阳职业技术学院的医学检验技术专业排名怎么样 附历年录戎数线
文山学院和韶关学院哪个好 附对比和区别排名
海南高考排名4000左右排位综合可以上哪些大学,具体能上什么大学
沈阳科技学院和广州软件学院哪个好 附对比和区别排名
重庆交通大学的能源与动力工程专业排名怎么样 附历年录戎数线
山东高考排名438500左右排位综合可以上哪些大学,具体能上什么大学
广东高考排名49880左右排位物理可以上哪些大学,具体能上什么大学
辽宁财贸学院和新疆农业大学哪个好 附对比和区别排名
青海高考排名16830左右排位理科可以上哪些大学,具体能上什么大学
广东高考排名224680左右排位物理可以上哪些大学,具体能上什么大学
皖西学院和山西中医药大学哪个好 附对比和区别排名
语文教师学期述职报告范文
语言类实习报告汇总六篇
关于美丽家乡的社会实践报告
客服主管岗位竞聘报告(客服主管岗位竞聘报告优秀范文)
物流公司员工年终述职报告
学校学生自我陈述报告高中
小学办学行为规范情况的督导调研报告
会计的实习报告四篇
副经理述职报告五篇
农村电子商务发展情况的调查报告范文
公司注销用清算报告范本
选派干部的述职报告范文
毕业自查报告
小教高级职称的述职报告范文
大学生教学社会实践报告10篇