ARM的串行口实验.

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:嵌入式技术开课机房:11号机房

2012年4月1日星期二8:10~11:35

专业班级通信

09( 班

学号

Xb09680204

实验项目名称实验3——

ARM的串行

口实验

指导教师陈玮

一、实验任务与实验目的

实验目的1. 了解UART的基本知识

2. 掌握基于群星系列CM3程序库的UART配置、数据收发编程

3. 学会串口调试助手或超级终端的使用

实验任务任务一:使用Stellaris驱动库函数,编写可以接收及发送字符串的基于EASY ARM 8962开发板的UART驱动程序

任务二:在Microsoft Visual Studio开发环境下,使用C#编写一桌面程序,要求可以通过串口发送指令,使用其打开LED3~LED6。命令协议可以自己定义。

二、报告内容

任务一

#include"uartGetPut.h"

#include"systemInit.h"

#include

#include

#include

#define PART_LM3S8962

#include

// 定义接收缓冲区

#define MAX_SIZE 40 // 缓冲区最大限制长度

char RxBuf[1 + MAX_SIZE]; // 接收缓冲区

int BufP = 0; // 缓冲区位置变量

tBoolean RxEndFlag = false; // 接收结束标志

// UART2中断服务函数

void UART0_ISR(void {

char c;

unsigned long ulStatus;

ulStatus = UARTIntStatus(UART0_BASE, true; // 读取当前中断状态

UARTIntClear(UART0_BASE, ulStatus; // 清除中断状态

if ((ulStatus & UART_INT_RX || (ulStatus & UART_INT_RT // 若是接收中断或者{ // 接收超时中断

for (;; {

if (!UARTCharsAvail(UART0_BASE

break; // 若接收FIFO里无字符则跳出

c = UARTCharGetNonBlocking(UART0_BASE; // 从接收FIFO里读取字符

if (c == '\r' {

UARTCharPut(UART2_BASE, '\r'; // 回显回车换行

UARTCharPut(UART2_BASE, '\n';

RxEndFlag = true; // 接收结束标志置位

break;

}

if (isprint(c // 若是可打印字符

{

if (BufP < MAX_SIZE {

UARTCharPut(UART2_BASE, c; // 回显

RxBuf[BufP++] = c;

RxBuf[BufP] = '\0';

}

}

}

}

}

// 以FIFO中断方式接收一个字符串,不回显,返回实际接收到的有效字符数int uartFIFOGets(char *s, int size {

int n;

while (!RxEndFlag

;

n = BufP;

BufP = 0;

RxEndFlag = false;

strncpy(s, RxBuf, size;

s[MAX_SIZE] = '\0';

return (n;

}

// UART初始化

void uartInit(void {

SysCtlPeripheralEnable (SYSCTL_PERIPH_UART0; SysCtlPeripheralEnable (U0TX_PERIPH; // 使能RX/TX所在的GPIO端口GPIOPinTypeUART(U0RX_PORT, // 配置RX/TX所在管脚为

U0RX_PIN; // UART收发功能

GPIOPinTypeUART(U0TX_PORT, // 配置RX/TX所在管脚为

U0TX_PIN; // UART收发功能

UARTConfigSet(UART0_BASE, // 配置UART端口

9600, // 波特率:9600

UART_CONFIG_WLEN_8 | // 数据位:8

UART_CONFIG_STOP_ONE | // 停止位:1

UART_CONFIG_PAR_NONE; // 校验位:无

UARTFIFOLevelSet(UART0_BASE, // 设置收发FIFO中断触发深度

UART_FIFO_TX2_8, // 发送FIFO为2/8深度(4B)

UART_FIFO_RX6_8; // 接收FIFO为6/8深度(12B)

UARTIntEnable(UART0_BASE, UART_INT_TX; // 使能发送中断

IntEnable (INT_UART0; // 使能UART总中断

IntMasterEnable(; // 使能处理器中断

UARTEnable (UART0_BASE; // 使能UART端口

}

// 通过UART发送一个字符

void uartPutc(const char c {

UARTCharPut(UART0_BASE, c;

}

// 通过UART发送字符串

相关文档
最新文档