单片机串口接收发生溢出中断错误

最近在写国产华大单片机HC32F4A0的串口超时中断加DMA接收数据过程中发现一个问题,在我串口收到数据进入串口超时中断后,正常情况下,如果数据量没超过DMA设定的发送次数最大情况,是能接收数据的,但是一旦接收超过最大发送次数后,DMA就一直接收不到数据了,经过各种尝试,最后发现串口一直会进入溢出中断中,清除了中断标志位也没用,后来猜测可能是串口最后的数据DMA没有接收成功,导致UART接收数据寄存器没有被处理,所以一直进入溢出中断,后来在UART超时中断中最后加上读取UART接收数据寄存器,这样就能解决这个问题。

版权声明:本文为CSDN博主「hongprove」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hongprove/article/details/122235938

最近在写国产华大单片机HC32F4A0的串口超时中断加DMA接收数据过程中发现一个问题,在我串口收到数据进入串口超时中断后,正常情况下,如果数据量没超过DMA设定的发送次数最大情况,是能接收数据的,但是一旦接收超过最大发送次数后,DMA就一直接收不到数据了,经过各种尝试,最后发现串口一直会进入溢出中断中,清除了中断标志位也没用,后来猜测可能是串口最后的数据DMA没有接收成功,导致UART接收数据寄存器没有被处理,所以一直进入溢出中断,后来在UART超时中断中最后加上读取UART接收数据寄存器,这样就能解决这个问题。

版权声明:本文为CSDN博主「hongprove」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hongprove/article/details/122235938

生成海报
点赞 0

hongprove

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

非DMA串口通信(USART7)

无DMA标准库版 1.串口通信初始化代码(USART7) 1. .c文件中的初始化函数 /*** breif 串口初始化函数*/ void USART_Config(void) {GPIO_InitTypeDe

嵌入式系统coredump分析

本文分享自中移OneOS微信公众号《嵌入式系统coredump分析》,作者:柏灵。 在进行嵌入式产品开发过程中,不可避免的会遇到,功能开发完了,固件烧进去了,

HT66F2390/STM32——AM2320温湿度传感器

1、说明 AM2320 数字温湿度传感器采用单总线、标准 I²C 两种通信方式。本文主要基于HT66F2390单片机,采用单总线通讯,实现AM2320传感器数据获取。关于AM2320传感器的使用,可参