PHP实现抓取百度搜索结果并处理接收错误
需积分: 44 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,设置合适的中断模式,并密切关注错误状态,以确保可靠的数据传输和有效的错误处理。在编写代码时,应当特别注意这些细节,以防止数据丢失或通信异常。
2020-10-18 上传
2020-12-25 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
郝ren
- 粉丝: 57
- 资源: 4046
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建