擦除内部flash导致的串口接收数据异常

在STM32H743开发中,程序在执行擦除内部Flash操作时,关闭了串口3的接收,导致后续数据丢失。通过调整中断管理和使用DMA接收,发现是擦除操作引起的问题。解决方案是在擦除前关闭并恢复串口接收,然后进行写入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

stm32h743程序运行过程中,有指令保存数据到内部flash,在执行操作的时候,影响到了另一个串口接收数据。

在存内部flash的过程中,有关闭中断,挂起其他任务的操作。但是均没有解决问题。

打印发现,另一个任务的DMA接收只能接收一个字节,接收的第一个字节是正确的,后面的字节丢失。

eae408029e90a44e626d358c8d2819f2.png

串口3的接收使用的是全局变量,将全局变量改成局部变量依旧没有解决问题。

检查写入程序,写入程序只做了擦除和写入操作,一条条注释发现是擦除操作导致的问题。

擦除内部flash的时候影响到了串口3的接收,在擦除之前使用HAL_UART_AbortReceive(&huart3);关闭串口三的串口接收,在写入完毕 使用HAL_UART_Receive_DMA(&huart3,...,...),解决问题。

如果串口数据丢失一次不是很影响可以这么做,很重要就不建议了,后来改到存储数据到外部flash了

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值