今天看啥  ›  专栏  ›  嵌入式微处理器

串口跑着跑着又挂了,到底怎么回事?

嵌入式微处理器  · 公众号  · 硬件  · 2024-09-26 12:00
    

主要观点总结

本文主要介绍了MCU在使用串口时可能出现的问题,特别是串口死掉的现象,以及这种现象背后的原因——串口Overrun(溢出)。文章详细解释了何为串口Overrun,以及如何产生以及如何检测这个问题。最后,文章给出了解决此问题的方法,以及在处理过程中需要注意的事项。

关键观点总结

关键观点1: MCU在使用串口时可能出现的问题及背景

串口是MCU最常用的外设之一,但使用过中可能会遇到各种问题,如串口死掉等。文章提到的串口死掉现象实际上是MCU不断进入串口中断,导致其他代码无法正常执行。

关键观点2: 串口Overrun(溢出)问题的解释

串口Overrun是串口数据接收时的一个问题,当数据不断进入移位寄存器而未被及时读取时,就会发生溢出。以STM32F030为例,其他MCU也存在类似问题。

关键观点3: 串口Overrun问题的产生和检测

通过串口调试助手发送数据过快,或者在串口中断服务函数开始处设置断点,都可能导致Overrun问题的产生。问题可以通过查看USART_ISR寄存器中的Overrun错误标志位来检测。

关键观点4: 解决串口Overrun问题的方法

解决问题的方法包括在中断服务函数中清除Overrun标志位,或者在串口初始化中关闭溢出功能。但需要注意,关闭溢出功能可能会导致数据丢失。

关键观点5: 实际应用中应注意的事项

如果MCU开启了Overrun功能,一定要在中断服务函数里加入清溢出标志的操作。否则,一旦溢出就可能导致严重的问题。另外,虽然关闭溢出功能在某些情况下可能可行,但在应用层上加上数据帧的校验仍然是保证串口数据通信正确性的好方法。


免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址: 访问原文地址
总结与预览地址:访问文章预览/总结
文章地址: 访问文章快照