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

STM32L4零基础学习笔记(四)串口通讯之发送

[复制链接]
D5Power 发布时间:2017-11-1 15:27
本帖最后由 D5Power 于 2017-11-16 16:42 编辑
; o* E8 k1 {  {. r$ d, j6 S
4 C4 S0 q- G6 L向前翻页:STM32L4零基础学习笔记(三)灯!等灯等灯5 O  {; G7 ]; x1 _

0 \. z  l5 E& P; D# z5 r
  在完成了点灯功能后,根据项目的需求,我本来决定研究WIFI模块的使用。从某宝淘了一块微雪的LPT100模块。准备上手时候才发现,要使用WIFI必须先弄明白串口通讯。因此,还是认认真真地去研究串口吧。
" k" F  R! [* ?
  前前后后折腾了大概1个星期,各种调试代码无法通过。后来才知道需要一个叫USB转TTL的模块,来和计算器通讯。大多数的文档里都没有写这个(可能是基础知识,像我这种菜鸟才会遇到)。什么是USB转TTL?大概是这么一个东西:

4 k! J+ E1 Y/ `# F! f6 K
1.jpg

) s6 Y0 e0 E3 H4 A% j
  如上图所示,实际上是一个主要由3V3(电源)、GND(接地)、RX和TX四个引脚连接到开发板。通过USB接入到电脑的转换器。可以通过RX(Recive)和TX(Transmit)进行接收和发送。另外。像我这种小白级用户,一直没考虑端口的对接方式,无脑以为RX对接开发板的RX,TX对接开发板的TX。后来想了一下,才反应过来。应该有开发板的TX接到转换器的RX,而转换器的TX接到开发板的RX。才能完成传送-接收的过程。不知道还有其他兄弟跟我一样接过线没,哈哈。
1 j' @2 W3 u$ _" L, {8 V& ]% A
  准备好开发板和转换器后,就可以动手了。
" W1 D$ x  }( @! w9 A9 Y: n3 }
  一、配置芯片和引脚
5 I. W2 d. y) k  a1 |7 f
  首先通过STM32CubeMX新建项目,并选择对应的芯片/开发板(本文所使用的是STM32L476G-Discovery),可以参考这里。串口通讯在板子上默认是关闭的,并且没有做针脚的映射。我们需要打开串口许可,并设置针脚映射。

% x) ~1 E; T% {+ {7 C6 r
2.png

" o  W! I  F+ P3 f) h* C0 E
: _+ a0 ?, A& u3 S* p% b$ f
  如上图所示,首先需要在左侧的列表中,找到串口USART2,这时你会发现,USART2前面有一个黄色的感叹号。说明这里是有问题的。将鼠标移上去,看到了清清楚楚的提示(翻译为中文):

' Q( r! ]3 l6 E+ L$ \$ h' H0 o
  PA3引脚功能需要映射为GPIO_Input
  PA4引脚功能需要映射为GPIO_EXTI4
  PA2引脚功能需要映射微GPIO_Input
  PD7引脚功能需要映射为GPIO_Output
  l: H/ N5 q; U& K$ Z
  根据提示信息对引脚进行设置后(其实只要设置PA4后,就可以了),USART2的状态发生了变化,但是还是有黄色的感叹号。这是因为需要设置另外的引脚,才能开启Hardware flow control。反正我看到黄色的感叹号就不舒服,因此还是根据提示进行了设置
0 @7 Z# c9 p/ d( i! T/ j' E' Y
3.png
. X4 \+ Y% [# I) }( @
  (这里其实设置完PA0和PA1后,感叹号就消失了。但是,强迫症还是把提示的端口都设置了。)
! o( P$ p) H6 l# w: B# y3 O$ L
  然后,USATR2的TX和RX引脚实际上就是PA2和PA3,因此,需要把这两个引脚分别设置为USART_TX,和USART_RX。如下图所示。

5 z# F  h7 E) q$ |  ~% ]2 B% k
4.png
  J, R) ^3 J8 o& Z8 p, Y2 k) o
  至此,我们开启了开发板的串口通讯功能,也设置好了引脚功能映射。接下来,通过STM32CubeMX的项目配置功能(Configuration),设置串口参数(注意需要和你手上的WIFI模块参数匹配,具体设置可看模块的开发手册)为波特率(Baud Rate)115200 Bits/s,单字符长度8字节(Word Length  8Bits),结束符(Stop Bits)为1。其他参数默认即可。如下图所示:
( Q2 s( R+ V  y1 U
5.jpg

* L. l6 N+ }5 t; s1 _0 i
点击OK保存设置后,即可生成项目代码了。具体操作可以参考这里

3 Q1 ]3 _/ E& S) M6 x- I4 K
二、连接串口模块
( B, R9 p' b3 T/ b+ D7 q1 x
使用杜邦线,将串口模块的3V3引脚GND引脚对应地连接到开发板的3V3和GND引脚。将串口模块的TX(发送)引脚连接到开发板的RX(接收-PA3),将串口模块的RX(接收)引脚连接到开发板的TX(发送-PA2)。然后开发板上电,串口模块接入电脑。此时,电脑的设备管理器中应该多出一个串口设备,我的电脑上如下(COM8就是我的串口调试设备):
; S1 l0 @. i7 B2 @3 A
6.png

) A: B- Q/ A, e& M8 O
  接下来,打开串口调试工具(可以在百度搜索SSCOM,下载最新版即可),打开后,应该可以自动识别你的串口调试设备,如果没有,请自行选择,并将波特率设置为115200。并点击“打开串口”
9 z0 {6 V/ K1 a1 K% z# B7 h( \
7.jpg
( t" W1 C: O0 K5 Q8 P  l
二、串口发送测试
* A8 n* q0 P' _8 @' f7 ~; s
其实到了写代码的部分,反而简单了。只需要2句代码就可以了。找到main函数中的while循环,写入代码:
; }: d+ Y: }& E$ t, j1 q" A
8.png
/ J) z  z9 P# M& b0 D. `* ?
  如上图的代码,开发板将每隔1秒,通过TX(PA2引脚)发送12个字节的字符串"Hello World\n"。

; A* }4 t" S6 O+ u! d
  接下来,编译并上载程序到开发板,并运行。你会发现串口模块的信号灯一直在闪,同时,串口调试工具将可以显示出收到的信息:
* H! \$ a) G. C( [) m$ M
9.jpg

3 q* ~3 P7 K+ g. d1 ?: i
  看起来好像很简单的样子,对吧。作为一名单片机小白,我是被坑了将近一周才把这两行代码调试出来。主要一直主观地以为通过USB就可以进行串口调试,因为USB也是串口嘛。但其实不是这么简单的。作为初学者,或许通过串口模块更容易上手一些。
/ |+ {9 X% {; d3 N# [
  串口的发送调试完成了,下一个目标是串口接收。

. u  E9 }- R1 m1 |1 C6 ^

; T0 O- m( Z: w( T! r8 p
----------------我是淫荡的分割线----------------
. h0 O; @8 t2 A1 F7 q' {
  广告时间,编写中的笔记会在我个人的公众号进行,有兴趣欢迎和我交流。也请各位高手斧正。
. x3 B% \9 ]7 [4 m3 U

' t1 l! {- [' s  Q  f5 l5 {! H4 Z/ J9 }
   qrcode_for_gh_bb8c73d98b29_344.jpg
收藏 评论3 发布时间:2017-11-1 15:27

举报

3个回答
D5Power 回答时间:2017-11-2 08:53:23
昨天在家发现直接从公众号贴过来的图片不能看到,今天全部把图片搬过来了。辛苦管理员继续审核
D5Power 回答时间:2017-11-3 09:29:12
搬图成功,感谢管理员审核
Inc_brza 回答时间:2017-11-4 10:16:53
不错,谢谢分享
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版