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

【经验分享】STM32F0xx_USART收发配置详细过程

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:54
前言
. j5 L) z# p* A3 k4 \串口对于处理器来说算是一种标配,也是在软件开发中必不可少的,那就是使用串口来调试信息(打印出相应的信息)。STM32F0系列的芯片,串口根据型号不同,数量也不同,从1个到8个不等。
, s$ k& ^: `) A. q2 U' U: S今天主要总结串口简单且常用的功能,发送字符和中断接收字符。今天提供的串口发送功能将在后面的各个模块总结中都需要使用到,主要用于验证和测试各项功能的正确性。+ Z  {2 e9 x' R1 w% j) r% m
下载" Q  \8 [5 _# {4 w/ I4 u
ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。
# f/ p& O6 w; p今天的软件工程下载地址(360云盘):
: A# q; [. A2 g9 \. F) g1 hhttps://yunpan.cn/cS5TeTVUWdc7V  访问密码 9b8c
$ c* D  q% w% K, }5 T. R
) a/ J$ A' e+ Y! z' k: l$ [1 mSTM32F0xx的资料可以在我360云盘下载:+ X& M. k8 \" G
https://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c37. a7 o  f0 j2 Q

9 @7 W+ e& G1 b5 C* z- ^准备工作
9 k2 A  [8 z' t1 a* t, D& ?* D# ^0 `% s2 C+ E" E9 t
①新建源程序文件
8 r5 s) i. u+ m. {  o2 c
; n7 U0 a0 z# u& l; t一个工程项目在增加模块功能的时候,一般都需要新增加模块源程序的文件。今天提供的工程由于增加USART模块,因此针对昨天(上一篇文章)的软件工程需要增加模块USART的文件(usart.c 和 usart.h)。
5 Z. L& e' b+ y- i. G
) \; `; y8 h# o1 j) A新建了源程序文件,还要添加到工程中进行编译才行。还有需要添加我们使用到的标准外设库文件到工程,我已经将文件新建,并添加到软件工程中,如下图:
6 s2 j2 I4 m; k7 C8 }3 l
/ F% h5 B  x- z  U3 F, ]+ @/ a  d
20160528183341337.png

" h1 i$ X* i$ ]1 k# @
' X( P9 e8 u3 }' Z注意:
! F1 U) O: U0 r6 R# \4 U/ P3 d/ U2 W( b
文件所在位置最好对应目录,方便管理。比如:usart.c放在bsp文件下,添加在工程中Bsp组下面。" e5 h9 C! Q) G9 x- H, z

5 j# D( n/ q5 R* m! }源代码详情4 M/ ~& I$ _6 M) ?. v
' z) C. d* {8 l" w, B
①RCC时钟
; }+ ~0 w: W% ^
) F" N4 Q: V) b+ A% A" V# s
20160528183349228.png

; z& E; C/ t2 S
. V3 J, d* q8 |1 o4 R. ]( W7 n( x该函数位于bsp.c文件下面;
8 R- [6 C' ~0 ?* ?& T  P  d1 W2 Y
我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于没有配置相应RCC时钟,让我找了很久的问题。
* d- a$ P: t) S5 L0 ?. w6 N2 u: B, |" P* e/ q
②USART引脚配置8 i* S% M3 R9 g. r, u
. b3 g0 y7 C; B* R! ^, F; W0 k( j
20160528183356478.png

* p& T/ h( T( s( g4 l' e. `& d8 H( T, b- O
该函数位于usart.c文件下面;+ i( z  x* d1 E+ K& }& T" o
& }8 v( `. q5 [1 F5 b$ A# h5 G
这里的配置就是对串口收发引脚进行配置(具体参数说明请看上一篇文章)。
/ J7 H) j9 D/ R. w8 g2 {& u0 e3 m& n! G, o: x
注意:/ ^( g- P9 d' t* f
. R; I8 p1 U0 J
上面红色框里面的配置是重点,必须对应配置才行。这里第三个参数“GPIO_AF_1”需要和你使用的外设对应。5 Z$ q4 c$ K+ m( ?6 O
# e5 b9 ~. h" ?( I1 d5 ?
③USART配置. z" l% i' w0 T: r( k

; c/ E9 q& F( n9 C) l
20160528183405770.png
7 q- N' l, I) a9 V) ~  |* e: p+ a

+ @5 l( q+ ]' b; n& J该函数位于usart.c文件下面;
& e& g$ w6 z0 z1 M/ U9 o  L$ J
0 J& z) s6 C+ i4 z% j% {* ^这里是串口相关参数进行配置,详情请看中文注释。具体每一个参数的意思,可以参看昨天方式,go to definition...; Y6 o: _: T8 G' I) E

! V- h5 i9 K' k/ c注意:: d# a& A( b8 U' Z
' ^5 I, C7 h7 h
上面红色框处,如果要使用中断(我们工程是接收),必须对应配置才行。: D7 |- p4 D5 j2 N, \6 a) ?

% y5 a. |5 A6 W& w④NVIC配置
  c: ]5 M3 {; |' o: e# K  J2 J: K# j
% Y' E& L1 f& x6 l& I( o5 }, e
20160528183414692.png
. |* A* c0 R! x3 }0 n9 C3 D0 h

% l! b" x" S& l该函数位于bsp.c文件下面;/ M! @7 a/ g. _
5 X9 F- Z9 J8 c) S; Q! ~
要使用中断,必须配置NVIC,这点也不能忘记。! ?7 o  q  a& U- R9 {

! j* B+ O* M+ h6 c% l8 V⑤串口中断接收函数1 u- p& N4 d+ {7 P
6 i0 ]& w5 U/ r7 C8 i8 R) w, p
20160528183420973.png

  v$ `% Z. X; M) e& s( D3 H
! |6 S3 I! Y8 k) E; F# r该函数位于stm32f0xx_it.c文件下面;
! S) r* }. k; H( J; W9 L" @+ X) y+ z
中断接收到一个字符,就发送出去(可以通过电脑串口发送字符,STM32F0接收到该字符又发送给电脑)。$ X7 [$ n9 {6 W6 H, E/ x

. V, R4 Y3 a( m5 H
0 ^9 a2 X$ u) c+ ?# t
3 T5 z# u6 N# y0 u  ]2 V说明
6 Z7 @# T! B+ `5 m/ L. j! V
& N! j4 p, V  A2 o2 aSTM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片(具体请看手册、或者亲自测试)。, T+ n9 h8 f; `) O

& ?/ O: f- p- f2 E5 Z以上实例总结仅供参考,若有不对之处,敬请谅解。
5 G$ }0 x1 ^2 g4 D) ?
; e, Z) m) S) N2 k: @% T. H- @" x; M3 y" t' @" `% G

( B% R+ e3 Q" t9 ^8 |- U$ H
收藏 评论0 发布时间:2021-11-23 20:54

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版