OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1897|回复: 5

DMA UART 485接口 发送数据缺少字节

[复制链接]

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7139
金钱
7139
注册时间
2015-1-23
在线时间
105 小时
发表于 2019-6-10 10:43:33 | 显示全部楼层 |阅读模式
程序使用DMA发送,开发送中断, 中断里关485发送. 结果发现发送出去的字节少了并且最后一个字节不对.
以为DMA中断已经发生,代表数据已发送完成,马上关485发送, 但数据还要经过UART外设, 不要忽略这个.  
解决问题的办法就是在中断里检测UART发送完成标志. 然后再关485发送. 数据就能通讯正常.
                while(!USART_GetFlagStatus(USART3, USART_FLAG_TC))
                {               
                }
                USART_ClearFlag(USART3,USART_FLAG_TC);

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7139
金钱
7139
注册时间
2015-1-23
在线时间
105 小时
 楼主| 发表于 2019-6-10 10:45:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2019-6-10 11:36:03 | 显示全部楼层
楼主的方向是对的,但是在中断里面延时一个字符是不建议的。
可以使用TC中断。
RT-Thread RTOS 音频,WIFI,蓝牙
回复 支持 反对

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-6-10 12:49:59 | 显示全部楼层
支持楼上,开启发送完成中断
一分耕耘一分收获。
回复 支持 反对

使用道具 举报

0

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2019-5-30
在线时间
4 小时
发表于 2019-6-10 14:36:19 | 显示全部楼层
支持!谢谢分享!
回复 支持 反对

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7139
金钱
7139
注册时间
2015-1-23
在线时间
105 小时
 楼主| 发表于 2019-6-10 15:20:16 | 显示全部楼层
aozima 发表于 2019-6-10 11:36
楼主的方向是对的,但是在中断里面延时一个字符是不建议的。
可以使用TC中断。

原来的程序是做的延时 , 能用,  但总觉得不对头, 找到了问题的根源
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 06:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表