- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UART串口通讯 中断方式LPC21XX串口通讯 移位寄存器 UnRSR 接收缓冲寄存器 UnRBR UARTn接收单元 RxDn 除数锁存寄存器 UnDLL、UnDLM UARTn波特率发生器 UARTn控制寄存器(UnLCR) FIFO控制寄存器(UnFCR) UARTn状态寄存器(UnLSR) 中断 中断使能寄存器 UnIER 中断标志寄存器 UnIIR UARTn高速缓存寄存器 UnSCR 发送缓冲寄存器 UnTHR UARTn发送单元 TxDn 移位寄存器 UnTSR MODEM Modem控制寄存器 U1MCR Modem状态寄存器 U1MSR CTS DSR DCD DTR RI RTS V P B 总 线 UART结构图 UART0、UART1各含有1个16字节的接收FIFO缓冲区。 软件设置接收FIFO缓冲区的触发字节。 UART FIFO控制寄存器 位 7 6 [5 : 3] 2 1 0 功能 Rx触发点设置 — 复位TxFIFO 复位RxFIFO 使能FIFO 接收FIFO UnRSR UnRBR UnFCR UART接收FIFO缓冲区 00:1字节 01:4字节 10:8字节 11:14字节 UART0、UART1各含有1个16字节的发送FIFO缓冲区。 UnTHR是UARTn发送FIFO的最高字节。 UART的发送FIFO是一直使能的。 发送FIFO UnTHR UnTSR UART发送FIFO缓冲区 UART线状态寄存器 位 7 6 5 4 3 2 1 0 功能 RXFE TEMT THRE BI FE PE OE RDR RxFIFO错误 发送器空 发送保持寄存器空 间隔中断 帧错误 奇偶错误 溢出错误 接收数据就绪 UART线状态寄存器——UnLSR 线状态寄存器(UnLSR)为只读寄存器,它提供UARTn发送和接收模块的状态信息 。 中断方式UART0初始化 void UART0_Ini(void) { uint16 Fdiv; PINSEL0 = (PINSEL0 0x0fffffff0) | 0 // 只修改P0.0和P0.1连接到UART0,教材P174表4.53 U0LCR = 0x83; // DLAB = 1,允许设置波特率, 教材P288 Fdiv = (Fpclk / 16) / UART_BPS; // 设置波特率 U0DLM = Fdiv / 256; //教材P283 U0DLL = Fdiv % 256; U0LCR = 0x03; // 8位数据位,1位停止位,无奇偶校验 U0FCR = 0x0C7; // 使能和复位TX和RX FIFO, Rx触发点为14字节 U0IER = 0X05; //RBR、Rx线状态 中断使能, THRE中断禁止,P284 VICIntSelect |= 16; //选择UART0为IRQ VICIntEnable = 16; //允许UART0中断 VICVectCntl15 = 0x20 | 6; VICVectAddr15= (int)UART0_IRQHandler; } 中断服务函数 void UART0_IRQHandler(void) {int i; switch(U0IIR 0x0f) { case 0x04: //RxFIFO达到14字节 for(i=0;i13;i++) RcvBuf[RcvP++]=U0RBR; break; case 0x0c: //接收超时, 表示数据结束 while(U0LSR 0x01) RcvBuf[RcvP++]=U0RBR; RcvL=RcvP; //一帧数据结束标志 RcvP=0; break; //准备接受下一数据 case 0x02: //发送缓冲器空 if(TxdP==TxdL) {U0IER = 0X05; // THRE中断禁止 TxdL=TxdP=0;} else {for(i=16;i0;i--) {if(TxdP==TxdL) break; //发送字符完 else U0THR = TxdBuf[TxdP++];} } break; case 0x06: //状态中断 RcvL=U0LSR; //读状态, 清除错误标志 RcvP=RcvL=TxdP=RxdL=0; break; } } 演示程序 int main(void) { uint8 RcvP=0,RcvL=0,TxdP=0,RxdL
您可能关注的文档
最近下载
- ARDS病理生理机制与临床诊疗实践题库答案-2025年华医网继续教育.docx VIP
- 急诊辅助检查判读与分析能力提升题库及答案-2025年华医网继续教育.docx VIP
- 游戏开发流程之完整指南.docx
- 2022年度中央机关遴选笔试题B卷真题试卷答案解析.doc VIP
- 飞机维修专业职业生涯规划书.pptx VIP
- 套管换热器计算(1).xls VIP
- 售后工程师沟通与协调技巧培养.pptx VIP
- 盐城市静脉产业园规划修编(2020-2030)环境影响报告书.docx VIP
- 民航安全隐患排查治理.docx VIP
- (高清版)DB42∕T 2305-2024 《高品质住宅技术标准》.pdf VIP
原创力文档


文档评论(0)