PHP实现抓取百度搜索结果并处理接收错误

需积分: 44 20 下载量 174 浏览量 更新于2024-08-10 收藏 1.85MB PDF 举报
"这篇内容主要介绍了在使用dsPIC30F2010单片机进行UART(通用异步接收发送器)通信时的接收错误处理和数据接收流程。" 在进行UART通信时,确保正确接收数据是至关重要的。在8位或9位数据模式下,以下是一系列必要的步骤: 1. **设置UART**:配置UART的工作模式,包括波特率、奇偶校验位、停止位等参数,以适应通信需求。 2. **启用UART**:启动UART模块,使其能够开始接收和发送数据。 3. **接收中断处理**:根据URXISEL位(UxSTA<7:6>)的设置,UART会在接收一个或多个数据字时触发中断。中断标志U1RXIF可以在中断标志寄存器中读取。 - **中断模式**: - 00或01:每接收一个字都会产生中断,不论接收缓冲区中已有多少字符。 - 10:当接收缓冲区有3个字符时产生中断。 - 11:接收缓冲区满(4个字符)时产生中断。 4. **错误检查**:读取OERR位(UxSTA<1>)来判断是否发生溢出错误。如果OERR置1,表示接收缓冲器已满,无法接收新数据。这时需要在软件中复位OERR,以便恢复正常接收。 5. **数据读取**:从UxRXREG中读取接收到的数据,这会将接收FIFO顶部的字移动到UxRXREG,并更新PERR(奇偶错误)和FERR(帧错误)状态。 接收缓冲器是4字深的,加上接收移位寄存器UxRSR,实际上形成了一个5字深的FIFO。URXDA位(UxSTA<0>)用于指示接收缓冲器中是否有可用数据。当URXDA为1时,表示有数据,为0则表示缓冲区为空。 在设备复位、进入或退出省电模式时,FIFO不会受到影响。然而,推荐在正常工作期间避免在不同的中断模式之间切换,因为这可能会导致混乱。 **接收错误处理**是UART通信的重要组成部分,主要包括接收缓冲器溢出错误(OERR位)。当接收缓冲器和移位寄存器都满,且检测到停止位时,OERR位会被置1,导致数据无法再被接收。此时,需要清除OERR位以恢复接收功能,同时,已接收的数据在UxRSR和UxRXREG中仍然有效。 dsPIC30F2010单片机的UART通信需要正确配置、启用UART,设置合适的中断模式,并密切关注错误状态,以确保可靠的数据传输和有效的错误处理。在编写代码时,应当特别注意这些细节,以防止数据丢失或通信异常。