STM32,如果使用 DMA 快速接收数据,主循环会触发

STM32 , main loop does fire if receive data quickly using DMA

我在 STM32 sim800c 模块的循环模式下使用 DMA。我可以 send/receive AT commands/response 没有任何问题,但是当我尝试使用 AT 命令下载文件时出现问题,当开始从 UART 接收数据时,DMA RxCpltCallback 函数很快被调用并且主循环没有得到触发直到收到所有数据。一旦收到所有数据,循环函数就会被触发,然后我检查包含最后一个文件块(64 字节)的响应。

我该如何处理这种情况?

增加 DMA 缓冲区的大小。中断将不那么频繁地被调用。如果您的 UART 速度真的很高(大约 10Mb),请使用流量控制(CTS/RTS)来控制 communication.l