UART0中断通信解析_第1页
UART0中断通信解析_第2页
UART0中断通信解析_第3页
UART0中断通信解析_第4页
UART0中断通信解析_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、程序清单4.29 UART中断方式通信实验程序# in elude con fig.h# define UART_BPS 115200 /* 串口通信波特率 */volatile uint8 uiGRcvNew; /* 串口接收新数据的标志 */uint8 uiGRcvBuf30 = 0; /* 串口接收数据缓冲区 */uint32 uiGNum; /*串口接收数据的个数 */*函数名称:DelayNS *函数功能:延时函数*输入参数:uiDly值越大,延时时间越长*输出参数:无*/void DelayNS (ui nt32 uiDly ui nt32 i;for (; uiDly 0; ui

2、Dly- for(i = 0; i 50000; i+; /*函数名称:UART0_IRQ *函数功能:串口中断服务函数*输入参数:无*输出参数:无*void _irq UART0_IRQ (void uiGNum = 0;while (U0IIR & 0x01 = 0 /*判断是否有中断挂起 */ switch (U0IIR & 0x0E /* 判断中断标志 */ case 0x04: /*接收数据中断*/uiGRcvNew = 1; /*置接收新数据标志*/for (uiGNum = 0; uiGNum 8; uiGNum+ /* 连续接收 8 个字节 */ uiGRcvBufuiGNum

3、 = U0RBR; break;case 0x0C: /*字符超时中断*/uiGRcvNew = 1;while (U0LSR & 0x01 = 0x01 /*判断数据是否接收完毕 */ uiGRcvBufuiGNum = U0RBR;uiGNum+; break;default:break;VICV ectAddr = 0x00;/*函数名称:UARTInit*函数功能:串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率为 115200 *输入函数:uiDly值越大,延时时间越长*输出函数:无*/void UARTInit (void uint16 uiFdiv;U0LCR = 0

4、x83; / *允许设置波特率*/uiFdiv = (Fpclk / 16 / UART_BPS; /* 设置波特率 */U0DLM = uiFdiv / 256;U0DLL = uiFdiv % 256;U0LCR = 0x03; /*锁定波特率*/l-kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk* 函数名称:UARTOSendByte*函数功能:向串口发送子节数据,并等待数据发送完成,使用查询方式*输入参数:uiDat要发送的数据*输出参数:无*/void UARTOSe ndByte (ui nt8

5、 uiDat U0THR = uiDat; /* 写入数据 */while (UOLSR & 0x20 = 0; /* 等待数据发送完毕 */*函数名称:UART0SendStr *函数功能:向串口发送字符串*输入参数:uiStr要发送的字符串指针* uiNum要发送的数据个数*输出参数:无*/void UART0Se ndStr(ui nt8 con st *uiStr, uin t32 uiNum ui nt32 i;for (i = 0; i uiNum; i+ /*发送指定个字节数据*/ UART0Se ndByte (*uiSt 叶+; *函数名称:main*函数功能:跳线JP6短接

6、,打开串口调试软件,串口 0中断方式通信*输入参数:无 *输出参数:无*int mai n (void PINSEL0 = PINSEL0 & (0x0F;PINSEL0 = PINSEL0 | 0x05; /* 设置 I/O 连接至U UART */uiGRcvNew = 0;UARTInit (; /* 串口初始化 */U0FCR = 0x81; /*使能FIFO ,设置8个字节触发点*/U0IER = 0x01; /*使能接收中断*/IRQE nable (;VICI ntSelect = 0x00000000; /*设置所有中断为向量中断 */VICV ectC ntl0 = 0x20 | 0x06; /*设置串口中断为最高优先级 */VICV ectAddr0 = (uint32UART0_IRQ; /* 设置向量地址 */VICIntEnable = 1 0x06; /* 使能串 口中断 */while (1 if (uiGRcvNew = 1 /*判断是否有新数据*/ uiGRcvNew = 0; /* 清除标志 */UARTOS

温馨提示

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

评论

0/150

提交评论