问题描述:
stm32h743程序运行过程中,有指令保存数据到内部flash,在执行操作的时候,影响到了另一个串口接收数据。
在存内部flash的过程中,有关闭中断,挂起其他任务的操作。但是均没有解决问题。
打印发现,另一个任务的DMA接收只能接收一个字节,接收的第一个字节是正确的,后面的字节丢失。
串口3的接收使用的是全局变量,将全局变量改成局部变量依旧没有解决问题。
检查写入程序,写入程序只做了擦除和写入操作,一条条注释发现是擦除操作导致的问题。
擦除内部flash的时候影响到了串口3的接收,在擦除之前使用HAL_UART_AbortReceive(&huart3);关闭串口三的串口接收,在写入完毕 使用HAL_UART_Receive_DMA(&huart3,...,...),解决问题。
如果串口数据丢失一次不是很影响可以这么做,很重要就不建议了,后来改到存储数据到外部flash了