UART0通信实验——查询方式.doc_第1页
UART0通信实验——查询方式.doc_第2页
UART0通信实验——查询方式.doc_第3页
UART0通信实验——查询方式.doc_第4页
UART0通信实验——查询方式.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

班 级 学号 姓 名 同组人 实验日期 室温 大气压 成 绩 UART0通信实验查询方式一、实验目的通过实验,掌握URAT0中断程序设计,能够理解通过串口0接受上位机发送的字符串,然后送回上位机显示。二、实验设备电脑一台,ARM7实验开发板,AXD仿真软件三、实验内容使用串口接收上位机发送的数据。使能UART0 的串口0进行数据发送/接收,接收采用中断处理方式。程序流程如下图所示: 主程序开始 从UART0接收字节数据 P0.0、P0.1引脚连接UART0: 有新数据 串口初始化:设置波特率;设置数据格式(包括数据位、停止 为和奇偶校验位) 从接收寄存器读取数据 从上位机接收字符串并保存 接收字节数据完成 向串口0发送数据 从UART0接收字节数据 主程序结束 四、实验原理使用查询方式进行通信,CPU必须不停地查询相应的标志位,将会占用CPU很多时间,效率较低;而采用中断方式进行通信,则可以避免这些问题。UxIIR【3:0】=0110:“奇偶错等错或间断”中断,则从线路状态寄存器中读取状态位,分析具体错误原因,处理。UxIIR【3:0】=0100:“接收缓冲寄存器就绪”中断,则从接收缓冲寄存器中读取数据插入接收队列。UxIIR【3:0】=0010:“发送保持寄存器空”中断,则从发送队列中读取数据写到发送保持寄存器中。UxIIR【3:0】=1100:“字符超时指示”中断,进行处理。中断服务处理子程序必须判断是否有尚未处理的中断。在处理完当前的中断源类型之后,不能立即退出服务,而应当继续判断UxIIR存器最低位是否为0。如果为0,则表示还有尚未处理的中断,应当继续根据UxIIR【3:0】判断中断源类型,进行处理;直到UxIIR的最低位为1,最后发送中断结束命令结束中断服务处理程序。1、寄存器描述UART0 包含10 个8 位寄存器,如下表所示。除数锁存访问位(DLAB)位于U0LCR 的bit7,它使能对除数锁存的访问。其中,寄存器U0RBR 与U0THR 是同一地址,但物理上是分开的,读操作时为U0RBR,而写操作时为U0THR;寄存器U0DLL 与U0RBR/U0THR、U0DLM 与U0TER 具有同样的地址,如果要访问U0DLM、U0DLL,除数访问位DLAB 必须为1,若要访问U0RBR/U0THR、U0TER,则除数访问位DLAB 必须为0。U0DLM 和U0DLL 寄存器是波特率发生器的除数锁存器,用于设置合适的串口波特率;U0RBR 为数据接收缓冲,用于读取接收到的数据,若FIFO 使能,串口接收到的数据会压入FIFO 缓冲;U0THR 为发送保存,向此寄存器写入数据时,将会引起串口数据发送,若FIFO 使能,则数据会压入FIFO 缓冲。通过线控制寄存器 U0LCR 设置串口工作模式,而U0FCR 则用于FIFO 使能或复位操作;当接收或发送数据时,会产生相应的状态标志位(U0IER);通过对U0IER 进行设置,可实现串口的发送、接收、出错中断等。U0IER 中的位0 为接收中断使能,位1 为发送中断使能,位2 为线状态中断使能(通信出错中断使能),若不使能相应的中断,则对应的中断标志不会产生,此时可以通过U0LSR 读取串口的状态判断串口操作是否完成或是成功。附表:2、波特率的计算波特率的除数计算如下:rUBRDIV0=( (int)(mclk/16./baud + 0.5) -1 )五、实验操作步骤1、在PC机上运行indows自带的串口通信程序超级终端程序,或者其他串口通信程序。2、通过PC机键盘输入字符,可以看到相应的字符显示在超级终端程序主窗口中,按回车3、通过PC 机键盘输入字符,可以看到相应的字符显示在超级终端程序主窗口中,按回车,所有的字符同时显示出来。如下图所示。六、实验程序(下划线为修改部分)/*Copyright(c)* Guangzou ZLG-MCU Development Co.,LTD.* graduate school* *-File Info-* File name:main.c* Last modified Date: 2004-09-16* Last Version:1.0* Descriptions:The main() function example template*-* Created by:Chenmingji* Created date:2004-09-16* Version:1.0* Descriptions:The original version*-* Modified by:Chenxibing* Modified date:2005-01-17* Version:* Descriptions:UART0通讯实验,中断方式,使用FIFO。*/#include config.h/* 定义串口模式设置数据结构 */typedef struct UartModeuint8 datab;/ 字长度,5/6/7/8可选uint8 stopb;/ 停止位,1/2可选uint8 parity;/ 奇偶校验位,0-无校验,1-奇校验,2-偶校验UARTMODE;uint8 rcv_buf8;/ UART0数据接收缓冲区volatile uint8 rcv_new;/ 接收新数据标志/* 函数名称 :IRQ_UART0()* 函数功能 :串口0接收中断服务程序* 入口参数 :无* 出口参数 :无*/void _irq IRQ_UART0 (void)uint8 i;if (U0IIR & 0x0F) = 0x04)rcv_new = 1;/ 设置接收到新的数据标志for (i=0; i8; i+)rcv_bufi = U0RBR;/ 读取FIFO的数据,并清除中断VICVectAddr = 0x00;/ 中断处理结束/* 函数名称 :UART0_SendByte()* 函数功能 :向串口0发送1字节数据* 入口参数 :dat要发送的数据* 出口参数 :无*/void UART0_SendByte (uint8 dat)U0THR = dat;/ 要发送的数据/* 函数名称 :UART0_SendBuf()* 函数功能 :向串口发送8字节数据* 入口参数 :无* 出口参数 :无*/void UART0_SendBuf (void)uint8 i;for (i=0; i 115200)return (0);if (set.datab 8)return (0);if (set.stopb = 0) | (set.stopb 2) return (0);if (set.parity 4)return (0);/* 设置串口波特率 */U0LCR = 0x80;/ DLAB = 1bak = (Fpclk 4) / baud;U0DLM = bak 8;U0DLL = bak & 0xFF;/* 设置串口模式 */bak = set.datab - 5;/ 设置字长if (set.stopb = 2)bak |= 0x04;/ 判断是否为2位停止位if (set.parity != 0)set.parity = set.parity - 1;bak |= 0x08;bak |= set.parity 4;/ 设置奇偶校验U0LCR = bak;return (1);/* 函数名称 :main()* 函数功能 :从串口UART0接收字符串ABCDEFGH,并发送回上位机显示。* 调试说明 :需要PC串口显示终端软件如EasyARM.exe。*/int main (void)UARTMODE set;set.datab = 8;set.stopb = 1;set.parity = 0;rcv_new = 0;PINSEL0 = 0x00000005;/ 设置I/O连接到UART0UART0_Init(115200, set);/ 串口初始化U0FCR = 0x81;/ 使能FIFO,并设置触发点为8字节U0IER = 0x01;/ 允许RBR中断,即接收中断IRQEnable();/ 使能IRQ中断/* 使能UART0中断 */VICIntSelect = 0x00000000;/ 设置所有的通道为IRQ中断VICVectCntl0 = 0x20 | 0x06;/ UART0分配到IRQ slot0,即最高优先级VICVectAddr0 = (uint32)IRQ_UART0;/ 设置UART0向量地址VICIntEnable = 1 0x06;/ 使能UART0中断while (1) *pt_str=Uart_Getch();/从超级终端接收字符Uart_SendByte(*pt_str);if(*pt_str=0x0D)/判断是否是回车 if(pt_str!=str) Uart_SendByte(CR0);/换行pt_str=str;while(*pt_str!=0x0D) Uart_SendByte(*pt_str);/显示接收到的字符pt_str+;pt_str=str;Uart_SendByte(CR0);/换行Uart_Printf(str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论