https://www.cnblogs.com/citycomputing/p/6139456.html
  多个中断在运行的情况下,如果设置的串口中断的中断优先级比较低,当高优先级的中断执行频率过高的情况下,串口中断内的数据接收处理就会很慢,导致接收速度和处理速度不一致,从而造成ORE(溢出错误中断)。
  在RXNE=1 的的条件下(也就是上次数据还没有读走),串口接收寄存器又接收好了一个字节的数据并准备往RDR 寄存器去转移的时候,会由硬件将ORE( 溢出错误)置1。溢出错误发生后就无脑中断,任务就得不到运行,导致死机。
  这个ORE位还很特别,使用USART_GetITStatus函数还读取不到,需要使用USART_GetFlagStatus函数。
  解决这种溢出中断的方式:

//串口1中断服务函数
void USART1_IRQHandler(void)
{if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)== SET)//程序中断过多,主机的发送速度又快,很容易会造成溢出错误{USART_ClearFlag(USART1, USART_FLAG_ORE); //清除溢出中断USART_ReceiveData(USART1);//必须要读,不然清除不了}if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)  //接收中断{prvvUARTRxISR(); //调用xMBRTUReceiveFSMUSART_ClearITPendingBit(USART1, USART_IT_RXNE);LED0 = ~LED0;}    if (USART_GetITStatus(USART1, USART_IT_TC) == SET)  //发送完成后中断,发送完成后,再执行对应函数,这种方式的话需要最开始就要先发送一次数据,这个处理已经在eMBRTUSend函数做了 {prvvUARTTxReadyISR();//中断处理函数xMBRTUTransmitFSMUSART_ClearITPendingBit(USART1, USART_IT_TC);LED1 = ~LED1;}
}
清除ORE位的方法:顺序执行对USART_SR和USART_DR寄存器的读操作。
注意:在此使用USART_ClearITPendingBit(USART1, USART_IT_ORE);清除ORE位是没有任何作用的。
还有ORE中断只能使用USART_GetFlagStatus(USART1, USART_FLAG_ORE) 读到(没有使能USART_IT_ERR中断时)

Modbus通信时USART中断导致程序死机的原因相关推荐

  1. 计算机死机造成桌面数据丢失,导致电脑死机的原因以及数据恢复的方法总结

    导致电脑死机的原因以及数据恢复的方法总结 一,前言:电脑在使用的过程中,难免会有意外情况发生.比如是突然断电.意外关机.出现死机等情况,这些情况往往是难以预料以及避免的.而发生这些情况,不仅会对电脑造 ...

  2. 切换输入法导致程序死机的解决办法

    近日在开发类似QQ屏幕截图过程中,发现在输入文字时切换输入法(Ctrl+Shift)时,会导致程序出现"卡死"现象.为了方便代码重用,屏幕截图模块是以动态库方式封装起来的.出现&q ...

  3. 导致服务器死机的原因集锦

    1.[散热不良]显示器.电源和CPU在工作中发热量非常大,因此保持良好的通风状况非常重要,如果显示器过热将会导致色彩.图象失真甚至缩短显示器寿命.工作时间太长也会导致电源或显示器散热不畅而造成电脑死机 ...

  4. 详解死机的原因和预防方法

    详解死机的原因和预防方法 详解死机的原因和预防方法 如今的计算机已经接近全面普及的程度了,它给人们在工作和学习上提供了极大的方便,不过,计算机的"死机"对于普通的计算机用户来说,却 ...

  5. 服务器一拷贝文件就死机,u盘拷贝文件时导致电脑死机怎么办【解决方法】

    使用u盘存储.拷贝文件在我们的日常工作生活中已是很常用的移动存储设备,而随着技术的发展,大容量u盘也随之而来,而使用 u盘拷贝文件导致死机 也是我们会遇到的问题,那么遇到这种 u盘导致电脑死机 的问题 ...

  6. 单片机程序死机原因查找方法

    1. 意外中断.是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象     2. 中断变量处理不妥.若定义某些会在中断中修改的 全局变量 ,这时要注意两个问题:首先为了 ...

  7. STM32Gx系列进入NMI中断造成芯片死机的解决办法

    STM32Gx系列进入NMI中断造成芯片死机的解决办法 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 STM32Gx系列进入NMI中断造成芯片死机的解决办法 前言 一.问 ...

  8. 让电脑死机的java代码_小编为你win7系统Java活动脚本出错导致电脑死机的还原方法...

    随着电脑的使用率越来越高,我们有时候可能会遇到win7系统Java活动脚本出错导致电脑死机问题,如果我们遇到了win7系统Java活动脚本出错导致电脑死机的问题,要怎么处理win7系统Java活动脚本 ...

  9. 电脑死机什么导致,带你一次性了解所有导致电脑死机蓝屏原因!

    电脑蓝屏绝对是小白最蛋疼的事,今天修姐就来讲下电脑为什么会出现死机蓝屏! 造成电脑蓝屏的原因很多,但总体来说也就两大类,硬件问题OR软件问题,今天就带你们一次性了解大多数导致电脑死机原因! 由硬件问题 ...

最新文章

  1. 支付宝服务窗的简单开发体会
  2. HTML5游戏引擎Playcraft将于近日正式启动
  3. Swift中文教程(五)控制流
  4. 函数名的使用、闭包、生成器
  5. mybatis的trim标签
  6. 微信聊天小程序——(四、聊天页面)
  7. 过流媒体取流失败_海康硬盘录像机:监控点取流失败,开始重连.错误代码为iVMS-4200.EXE[302]求大神解决...
  8. Windows路由表详解与双网卡访问慢问题解决
  9. xbox 360手柄驱动程序_魔派PRO手柄常见问题解决方法一览
  10. python数据分析09_pandas数据聚合与分组运算
  11. 100M宽带能下载多快? 关于带宽的下载速度研究
  12. python成都 培训
  13. html中tr中加判断换行符,深入解析HTML的table表格标签与相关的换行问题
  14. C语言 打印2的n次方
  15. 点选识别DLL/滑块识别DLL/通用验证码识别DLL/图标点选/本地识别DLL
  16. 【NOI2011】阿狸的打字机
  17. golang 将EBCDIC转成ASCII
  18. 字节流和字符流(详解)
  19. SODA理事会理事、苏打数据CEO高丰:只有数据流通,数据才能创造价值
  20. 解释java程序所使用的命令是,【单选题】Java 源程序的解释命令是

热门文章

  1. python免费的验证码识别OCR库
  2. 角速率随机游走—笔记
  3. Java Date equals()方法具有什么功能呢?
  4. 精灵标注命名实体 JSON数据转BIO
  5. 这篇文章什么也不是,莫看啦
  6. 数据门户设计:想要自己的门户首页标新立异?Smartbi帮你
  7. Java解决《保龄球》问题
  8. e1载波的数据速率是_开撕?华为高管质疑三星5G芯片数据造假!
  9. WebRTC音频处理流程概述
  10. unity5.6.4安装包_Unity 2020.1中的软件包管理器更新