[STM32F4] stm32f4 串口空闲中断+DMA遇到的奇怪错位问题

[复制链接]
 楼主| 等你下课 发表于 2023-10-29 02:04 | 显示全部楼层
此后每次发送8字节数据的情况都和上面一样了,如果不单步debug观察,宏观上看起来数据总是错位的。
 楼主| 等你下课 发表于 2023-10-29 02:04 | 显示全部楼层
解决方案
如果不改程序想恢复正常,只要发送长度少于8字节的数据即可,这也是为什么以前缓冲buf较大时程序没有出现异常
 楼主| 等你下课 发表于 2023-10-29 02:05 | 显示全部楼层
删除USART3_Init()函数最后一句DMA_Transfer_Enable(DMA1_Stream1,USART3_RX_BUFFER_SIZE)即可从根本上解决此问题

 楼主| 等你下课 发表于 2023-10-29 02:05 | 显示全部楼层
后记
出现这种错位,本质上还是在于对底层寄存器了解太少,又没怎么看数据手册。我以前只是简单地顾名思义把DMA_Transfer_Enable函数当成转移使能了,还以为每次传输都要加,导致了这种错位。
所以说知其然还要知其所以然,做技术还是要踏实一点,急于求成不关注细节总会出问题,这次也算给自己提个醒吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部