发新帖我要提问
12
返回列表
打印
[STM32F4]

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

[复制链接]
楼主: 等你下课
手机看帖
扫描二维码
随时随地手机跟帖
21
等你下课|  楼主 | 2023-10-29 02:04 | 只看该作者 回帖奖励 |倒序浏览
此后每次发送8字节数据的情况都和上面一样了,如果不单步debug观察,宏观上看起来数据总是错位的。

使用特权

评论回复
22
等你下课|  楼主 | 2023-10-29 02:04 | 只看该作者
解决方案
如果不改程序想恢复正常,只要发送长度少于8字节的数据即可,这也是为什么以前缓冲buf较大时程序没有出现异常

使用特权

评论回复
23
等你下课|  楼主 | 2023-10-29 02:05 | 只看该作者
删除USART3_Init()函数最后一句DMA_Transfer_Enable(DMA1_Stream1,USART3_RX_BUFFER_SIZE)即可从根本上解决此问题

使用特权

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则