你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32Cube Uart_DMA测试工程

[复制链接]
appllo 发布时间:2015-9-17 16:00
本帖最后由 appllo 于 2015-9-17 16:31 编辑 7 L4 c" }8 b+ t2 u; `
: Q. P5 Z- b0 b% w" S
1、打开软件,新建工程,选择芯片信号,这里选择file:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/6020dc03-9bd2-451a-bddf-4682424732d1.png4 F, D0 u# M; }5 c
2、USART1使能选择“Asynchronous”模式:9 D! v/ y. t# v* h
3、配置“RCC”,High Speed Clock (HSE) 选择外部晶振
% ]3 i6 V1 [" S- h4、配置“SYS",
2 D. [0 V$ n4 X8 I( b3 f6 O' J) h5、“Clock Configuration”选项,晶振填8M,选择“HSE”,HCLK填写180MHz,如下图所示
) }, J7 r4 P" p) ], G) H4 mfile:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/f3536241-50ca-4292-969e-6581d61397f3.png1 l  V; ^9 v$ D
6、“Configuration”,点击“file:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/bd3e9bbe-9454-4568-a373-f9028750fcdb.png”,对usart1进行配置
& |, e5 Y! K5 H1 Y; K" F3 ~) k& X; Q2 xfile:///C:/Temp/Wiz/4dbfb2a5-f153-4155-944a-4d40a5495286_4_files/92183fd7-2963-4e26-9cf7-7ad72964c381.png! W' Q% e/ }2 W, U* L9 U4 ]5 c5 d
中断一定要都选,否则,程序运行起来,只能运行一次。
' i9 }/ x/ f0 ?0 p) V" g+ o. m7、选项“Project”,选择“Project Setting”,选择习惯使用的编译软件;
$ i) k$ m4 o) P( e5 L8、选项“Project”,选择“Generate Code”,生成工程,用MDK打开;  n, {; J+ q2 c) [6 K7 W7 e, z
9、在主函数上使用语句:HAL_UART_Transmit_DMA(&huart1,sendbuf,sizeof(sendbuf));就能通过DMA发送串口数据了。0 c. q7 F+ I6 w$ C* G0 g
2.png
3.png
4.png
5.png
6.png
7.png
收藏 2 评论20 发布时间:2015-9-17 16:00

举报

20个回答
appllo 回答时间:2015-9-21 09:23:13
hithfy 发表于 2015-9-20 21:37
3 o( Z6 d2 p. ]8 ]" k2 D) v# t1 x可以不用选UART的中断吧,直接在设置DMA的MODE中设置为CIRCULAR,只要不出主函数都会循环加载发送。 ...
, H9 u: W. {* q4 K3 U8 o5 P
不会的,有个中断标志位得清楚,最简单的方法就是使能UART中断。。你可以试试,也可以手动清除。
McDong 回答时间:2018-8-3 16:13:33
hithfy 发表于 2015-9-21 18:35
5 ^8 o9 A% J! `$ q% I4 G* |0 {  P但是我就是没有设置串口中断,他还是能正常发送啊?!

  N3 R$ D- B) P不打开串口中断只能发送一次,好像是,DMA串口发送和接收,其实还是会进入串口本身的中断,必须清楚中断标志位,不然串口就一直在busy状态
hithfy 回答时间:2015-9-21 18:35:41
appllo 发表于 2015-9-21 09:23
5 ]  v9 c& ~* U7 s* G9 u不会的,有个中断标志位得清楚,最简单的方法就是使能UART中断。。你可以试试,也可以手动清除。 ...
, i1 U2 \8 F% \  r0 S* L
但是我就是没有设置串口中断,他还是能正常发送啊?!
wyxy163@126.com 回答时间:2015-9-17 17:47:23
提示: 作者被禁止或删除 内容自动屏蔽
你好我好大家好! 回答时间:2015-9-17 18:36:40
谢谢分享   
Paderboy 回答时间:2015-9-17 19:19:02
多谢分享。。。
netlhx 回答时间:2015-9-18 08:36:32
感谢分享!
shanji 回答时间:2015-9-18 09:24:24
这还是挺方便的
appllo 回答时间:2015-9-18 16:30:17
在设置过程中最重要的就是两个中断都得选上,不然没法使用
hithfy 回答时间:2015-9-20 21:37:08
可以不用选UART的中断吧,直接在设置DMA的MODE中设置为CIRCULAR,只要不出主函数都会循环加载发送。
anger0925 回答时间:2015-9-21 20:50:39
谢谢分享              
appllo 回答时间:2015-9-22 19:11:48
hithfy 发表于 2015-9-21 18:35
* o3 ]) K( y& \* w2 m但是我就是没有设置串口中断,他还是能正常发送啊?!
7 W& r+ Y+ ]2 u$ a; R. G4 i
你是用dma发送的吗?
112207301219 回答时间:2015-9-22 20:28:08
不错不错
hithfy 回答时间:2015-9-22 21:10:45
appllo 发表于 2015-9-22 19:11( K: ^3 w% B6 Q8 o* u
你是用dma发送的吗?

2 n: V; c+ \1 x  J7 A对啊,调用的HAL_UART_Transmit_DMA,并且我在在线调试时主程序停了,它在继续发送(应该是不停在传送吧?!)。。。
appllo 回答时间:2015-9-24 14:25:55
我测试的时候,貌似不行,对了你评估了F7没,那个sd卡,用cube好像用不起来,真是日dog了。。
12下一页

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版