OpenEdv-开源电子网

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

USART DMA方式发送

[复制链接]

37

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
258
金钱
258
注册时间
2012-9-17
在线时间
4 小时
发表于 2012-9-23 08:39:27 | 显示全部楼层 |阅读模式
哪位大侠给一个USART DMA发送数据的,使用库函数写的程序啊,谢谢了!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-9-23 09:35:57 | 显示全部楼层
我们的例程就有啊。库函数版本的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

头像被屏蔽

263

主题

455

帖子

1

精华

禁止访问

积分
1212
金钱
1212
注册时间
2011-9-25
在线时间
12 小时
发表于 2012-9-23 13:52:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2012-9-23 22:42:07 | 显示全部楼层
回复【3楼】syhx8262516:
---------------------------------
额,显摆…………呵呵
努力,前进。
回复 支持 反对

使用道具 举报

头像被屏蔽

263

主题

455

帖子

1

精华

禁止访问

积分
1212
金钱
1212
注册时间
2011-9-25
在线时间
12 小时
发表于 2012-9-23 22:50:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-9-23 23:44:26 | 显示全部楼层
回复【5楼】syhx8262516:
---------------------------------
谢谢共享.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

37

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
258
金钱
258
注册时间
2012-9-17
在线时间
4 小时
 楼主| 发表于 2012-9-24 11:00:13 | 显示全部楼层
回复【5楼】syhx8262516:
---------------------------------
你好,我不太明白为什么还有void USART1_DMA_SendBytes(uint8_t *bytes, uint16_t counts);函数呢,不都是DMA自动发送吗?
使用DMA发送数据,我的理解是初始化以后,使能DMA,当然也得使能USART_DMA,然后就判断DMA自动发送,即判断while(DMA_GetFlagStatus(DMA1_FLAG_TC4) == RESET);等待发送完成,不知道我的理解对不对,希望您能给指点一下,谢谢了!
DMA USART调试了一天了怎么也调试不过去,我使用的USART2 映射到PD5(我只发送)
回复 支持 反对

使用道具 举报

头像被屏蔽

263

主题

455

帖子

1

精华

禁止访问

积分
1212
金钱
1212
注册时间
2011-9-25
在线时间
12 小时
发表于 2012-9-24 12:44:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

263

主题

455

帖子

1

精华

禁止访问

积分
1212
金钱
1212
注册时间
2011-9-25
在线时间
12 小时
发表于 2012-9-24 12:49:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2012-9-24 13:48:38 | 显示全部楼层
回复【7楼】murennan:
---------------------------------
起始DMA开始发送是由你决定的,但是你开始发送之后,就直接交给总线了,剩下的它自动完成,知道你那个指针指的内容为空,不想平常串口的需要一个字节一个字节的发送
努力,前进。
回复 支持 反对

使用道具 举报

37

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
258
金钱
258
注册时间
2012-9-17
在线时间
4 小时
 楼主| 发表于 2012-9-24 14:14:26 | 显示全部楼层
回复【9楼】syhx8262516:
---------------------------------
OK,Thank you!
回复 支持 反对

使用道具 举报

26

主题

467

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
876
金钱
876
注册时间
2013-10-3
在线时间
23 小时
发表于 2014-5-26 15:20:54 | 显示全部楼层
回复【5楼】syhx8262516:
---------------------------------
这个太好了,,不仅代码编写整齐,还有一些预编译,,很便于对代码量的裁剪和移植,,太棒啦,,赞一个,,呵呵,,谢谢你
避免犯错本是错误所在,我错故我在……
回复 支持 反对

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2016-12-14 14:20:49 | 显示全部楼层
syhx8262516 发表于 2012-9-23 22:50
回复【4楼】 5498折戟沉沙 :
---------------------------------
额,我把代码共享出来吧,是库函数的, ...

参考了您的代码,有如下疑问,请教一下,
发送时,代码中有如下两个等待:       
while(DMA_GetFlagStatus(DMA1_FLAG_TC4) == RESET);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
第一个理解为:DMA传输完成,
第二个是等UASRT发送完成,
如果程序中还是需要判断usart的TC标志的话,那使用DMA不是还需要CPU等待吗?
DMA的本意难道不是发送不需要CPU参与吗?

但是如果不判断TC标志,如果usart还没发送完成,程序中DMA有可能再次使能,这样会不会有问题?

麻烦大家指点一下
回复 支持 反对

使用道具 举报

Enderow 该用户已被删除
发表于 2016-12-24 13:07:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2016-12-29 17:23:44 | 显示全部楼层
Enderow 发表于 2016-12-24 13:07
既然用了DMA的usart,他DMA传输是保证了USART的传输节点的,不像内存到内存,全速传输,所以判断DMA完成 ...

谢谢指点,
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-28 03:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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