关于STM32串口使用DMA接收时发生ORE(过载错误)的原因分析

【关于STM32串口使用DMA接收时发生ORE(过载错误)的原因分析】当使用串口接收到一帧数据,超时完成,关闭接收DMA,此时串口还是激活的,若此时串口来数据,无法触发DMA传输,此时产生上溢错误(ORE),由于串口数据寄存器里的数据不能及时转移走,后面来的数据就进不来。一旦出现这种错误后,就不会再触发DMA请求,即使再开启DMA也不行。要恢复正常的话就只有Deinit后再重新初始化串口,或者使用read接口直接将数据寄存器中的数据读走后,后面的数据才能正常进入,从而正常产生DMA请求,这个DMA请求是指硬件请求。

    推荐阅读