中断里不读DR,RXNE不清,系统卡死 短文标题中断里不读DRRXNE不清系统卡死你有没有想过一个问题USART接收中断配置好了一上电程序就卡死一直在中断里出不来。很可能你没读DR。RXNE标志置1后只有读DR才能清除。RXNE接收数据寄存器非空USART收到一个字节硬件把数据存入DR同时RXNE标志置1。如果RXNEIE使能触发中断。中断里必须读DR硬件才自动清除RXNE。void USART1_IRQHandler(void){if (USART1-SR USART_SR_RXNE) {uint8_t data USART1-DR; // 读DR硬件自动清RXNE// 处理数据...}}不读DRRXNE永远为1退出中断立即再进系统卡死。ORE溢出错误第二个陷阱上一字节还没读下一字节又收到了ORE标志置1。ORE置1后USART停止接收新数据直到软件清除。清除ORE的正确顺序先读SR再读DR。if (USART1-SR USART_SR_ORE) {volatile uint32_t tmp USART1-SR; // 读SRtmp USART1-DR; // 再读DR}顺序错了ORE清不掉。回环实验通过串口回环理解中断收发配置USART接收中断PC发送数据单片机在中断中接收将收到的数据立即发送回去回环void USART1_IRQHandler(void){if (USART1-SR USART_SR_RXNE) {uint8_t data USART1-DR;// 回环将收到的数据立即发送while (!(USART1-SR USART_SR_TXE));USART1-DR data;}}标志清除方式汇总这个故事的启示外设标志位是硬件给软件的“信号”不清理硬件就认为你还没忙完。收到信号中断回应信号读DR清标志。不回应硬件一直喊系统卡死。写在最后写USART接收中断记住三件事读DR清RXNE读SR再读DR清ORE不清楚清除方式查手册。不读DR中断不停。不清ORE接收卡死。本文灵感源于于振南《新概念ARM32单片机》教程第4.9节。觉得有用点赞、转发让更多人避开“不读DR”的坑。

相关新闻

最新新闻

OSI七层模型与TCP/IP四层模型:两个网络参考架构的对比解析

OSI七层模型与TCP/IP四层模型:两个网络参考架构的对比解析

一、两个模型的基本定位在网络技术学习中,OSI七层模型和TCP/IP四层模型是两个绕不开的概念。很多人容易混淆它们,甚至认为它们是“二选一”的关系——两者都对,只是各自的设计目标和应用领域不同。OSI七层模型(开放系统互联参考模…

2026/7/31 7:22:30
医学研究中的偏倚:识别、控制与统计校正实战指南

医学研究中的偏倚:识别、控制与统计校正实战指南

1. 从一次失败的临床研究复盘说起几年前,我参与过一个关于某种新型降压药疗效的观察性研究。数据收上来后,结果“好”得惊人:与常规治疗组相比,新药组的患者血压达标率高出近40%,心血管事件发生率也显著降低。团队一度…

2026/7/31 7:22:30
江协科技STM32开发课程回顾01

江协科技STM32开发课程回顾01

新建工程的步骤 1.建立工程文件夹,Keil中新建工程,选择型号 2.工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹 3.工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到…

2026/7/31 7:22:30
老年护理实训室建设与适老化设计实践

老年护理实训室建设与适老化设计实践

1. 老年护理实训室建设的核心价值与定位在人口老龄化加速的今天,培养专业老年护理人才已成为社会刚需。作为护理专业教学的重要实践场所,一个设计科学的实训室能让学生在校期间就掌握真实场景下的操作规范。我参与过三所职业院校的护理实训室规划&#x…

2026/7/31 7:22:30
信捷PLC动态验证码实现与安全防护方案

信捷PLC动态验证码实现与安全防护方案

1. 项目背景与核心价值在工业自动化控制领域,PLC(可编程逻辑控制器)作为"工业大脑"已经渗透到生产线的各个环节。信捷PLC凭借其高性价比和本土化服务优势,在国内中小型自动化项目中占据重要市场份额。传统PLC应用多集中…

2026/7/31 7:22:30
C语言%符号全解析:取余运算与格式化输入输出的核心技巧

C语言%符号全解析:取余运算与格式化输入输出的核心技巧

1. 项目概述:重新认识C语言中的“%”在C语言的世界里,符号“%”绝对算得上是一位“多面手”。对于初学者,它可能只是数学课本里那个“取余”符号的代码版;对于写过几个控制台程序的朋友,它又摇身一变,成了p…

2026/7/31 7:17:29

月新闻