wdliming-222461 发表于 2019-8-10 13:34:52

为何stm32使用cubemx生成的串口DMA发送只发送部分数据

参考了https://www.stmcu.org.cn/module/forum/thread-614657-1-1.html?original《HAL库UART按DMA方式发送和接收函数简析及测试》的文章
我是用的是stm32F103C8T6,用cubemx4.27导入楼主的工程,代码也是一模一样的,为何会出现以下的现象:



wdliming-222461 发表于 2019-8-10 13:36:44


发送和接收个数不相符啊??

wenyangzeng 发表于 2019-8-10 14:35:40

wdliming-222461 发表于 2019-8-10 13:36
发送和接收个数不相符啊??
可能是系统时钟没有工作在正确的72MHZ,波特率有误。

wdliming-222461 发表于 2019-8-10 19:13:38

wenyangzeng 发表于 2019-8-10 14:35
可能是系统时钟没有工作在正确的72MHZ,波特率有误。

这个不是问题,肯定是72MHZ的。

wdliming-222461 发表于 2019-8-11 08:34:34

那位大神可以帮忙解释啊~???

你若安好_清风徐来 发表于 2019-8-12 10:30:03

你DMA接收字符长度是多少,一般如果你设置20个字节那么你应该每20个字节发送,你发送几百个字节试一试,如果几百个字节误差20个字节内那可能就是你DMA接收字节问题了(这个应该不是问题是DMA机制问题,你要是觉得不对你把DMA接收字节改为1就可以了),如果误差大于20个有可能是你中断处理时间太长导致数据丢失或者你配置问题,建议你你一个一个字节发送看看效果

wdliming-222461 发表于 2019-8-12 15:15:45

我改为1试过了,但是还是有问题的,如果我换成中断接收,就没问题,发送和接收都是相同的字符。

wdliming-222461 发表于 2019-8-12 15:17:00

你若安好_清风徐来 发表于 2019-8-12 10:30
你DMA接收字符长度是多少,一般如果你设置20个字节那么你应该每20个字节发送,你发送几百个字节试一试,如 ...

我改为1试过了,但是还是有问题的,如果我换成中断接收,就没问题,发送和接收都是相同的字符。

你若安好_清风徐来 发表于 2019-8-13 09:20:27

wdliming-222461 发表于 2019-8-12 15:17
我改为1试过了,但是还是有问题的,如果我换成中断接收,就没问题,发送和接收都是相同的字符。
...

建议上传代码,我也一时间找不出问题所在

wdliming-222461 发表于 2019-8-13 09:48:22

你若安好_清风徐来 发表于 2019-8-13 09:20
建议上传代码,我也一时间找不出问题所在

好的好的,我回家把代码上传看看,反正是按照连接上面的来的。
页: [1] 2
查看完整版本: 为何stm32使用cubemx生成的串口DMA发送只发送部分数据