请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:54
前言
' F" j$ T7 B4 O; v& U  U0 B; T串口对于处理器来说算是一种标配,也是在软件开发中必不可少的,那就是使用串口来调试信息(打印出相应的信息)。STM32F0系列的芯片,串口根据型号不同,数量也不同,从1个到8个不等。
$ h& Z( A2 {5 e& s8 f0 I6 T- @今天主要总结串口简单且常用的功能,发送字符和中断接收字符。今天提供的串口发送功能将在后面的各个模块总结中都需要使用到,主要用于验证和测试各项功能的正确性。
9 n1 t) r- W6 j* c5 W  N7 n- b" U下载
3 e5 P# x0 o4 u8 U5 c$ W$ |ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。. d/ V% d& A% R0 e
今天的软件工程下载地址(360云盘):
1 ]# \; d3 }8 y% J* h$ J5 Bhttps://yunpan.cn/cS5TeTVUWdc7V  访问密码 9b8c
& a; {' U$ _: c2 j0 m( p
. D  v. h2 Z1 e1 L  |+ ASTM32F0xx的资料可以在我360云盘下载:
- x8 q( u9 a8 |, ^  U, k$ m4 Chttps://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c37- b+ Q3 w6 D' l: o* W8 M
$ z. n& ^6 n; B! m/ M$ E3 w
准备工作$ F4 A7 B* V! ]2 e, b8 y

3 P! l# R; p7 T①新建源程序文件; f+ m5 F6 f5 D- T

& q7 p6 C, o/ ?* w/ ?一个工程项目在增加模块功能的时候,一般都需要新增加模块源程序的文件。今天提供的工程由于增加USART模块,因此针对昨天(上一篇文章)的软件工程需要增加模块USART的文件(usart.c 和 usart.h)。
0 A8 L( ~' s- J) A, K' d! Z$ g9 D. q8 Y+ g6 O: L' q* @2 d+ v; p
新建了源程序文件,还要添加到工程中进行编译才行。还有需要添加我们使用到的标准外设库文件到工程,我已经将文件新建,并添加到软件工程中,如下图:2 A( _/ _" H- c0 |
8 R- I6 ^8 j3 h, B# W. q2 }9 t
20160528183341337.png

$ B6 P& _5 {4 {. ^! J8 q) j1 a2 O: w
$ N& V) U/ h3 h8 _) T3 O' x注意:2 @; W3 Q3 `. D$ [' p) }0 u

* o8 d' ]1 z) L文件所在位置最好对应目录,方便管理。比如:usart.c放在bsp文件下,添加在工程中Bsp组下面。( D1 \; `: A( |% M1 M

. B* p+ p& l% r. V源代码详情6 ?7 j' g$ o7 Q9 A" Y8 p
6 w/ w& \# e* C, \: H0 B9 |! [
①RCC时钟
* d2 R- `- o6 u1 G" i/ m1 ]  }% A2 A: n
20160528183349228.png

. `6 n5 n! w( s# I, q( }2 d
7 l9 M) t1 z6 q; F5 E( _" u1 Y0 ^- l该函数位于bsp.c文件下面;3 B+ L, w3 _& q( |9 \
! p/ T' o5 v1 q8 S( x! \
我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于没有配置相应RCC时钟,让我找了很久的问题。* U6 p/ ?) F! M
  p) x( z7 f* j  ]! m1 U
②USART引脚配置
8 R& O) g! j1 R3 ~
0 p) J& y  @) d( ^
20160528183356478.png

0 n% ~! _: A$ l9 C" n0 O0 q
3 n: T7 {( s- s- p3 K该函数位于usart.c文件下面;1 z4 w6 V2 o9 W+ f3 W
9 ~$ l/ Q" I- q
这里的配置就是对串口收发引脚进行配置(具体参数说明请看上一篇文章)。
$ ?$ I/ h+ R! I, |% i& z
2 F9 o# h9 L- z5 k1 k; Q注意:  K" {% o1 `' q0 s" _% v. {

1 H, J% ]1 i% n9 x6 R上面红色框里面的配置是重点,必须对应配置才行。这里第三个参数“GPIO_AF_1”需要和你使用的外设对应。
: L( t, S# T# K; ]4 u9 o# n3 @# u: f5 n0 T9 S
③USART配置
" A$ F* a' d) k: |5 _6 Z% Z4 G# {' C. q* d8 ]
20160528183405770.png
2 i+ c6 }, w8 E' z' T% T. \! b

1 \7 V' E/ z8 |该函数位于usart.c文件下面;& ^& I0 P- H- t1 s

% P* s1 l' X; l( ~% I这里是串口相关参数进行配置,详情请看中文注释。具体每一个参数的意思,可以参看昨天方式,go to definition...
) A' H6 f. r0 T: m! b: g
1 W* y- a% G8 i注意:$ V' t/ Q8 d$ f3 l6 O  Z+ [* c1 _
/ X" L7 h1 F5 J) H* a
上面红色框处,如果要使用中断(我们工程是接收),必须对应配置才行。
5 n- B. j( \7 D2 t$ Y6 K% G# T! h( }  ?' ]# Y* |' o* A
④NVIC配置! {8 d- n9 h. Y2 }0 Y
( i2 ?: K0 C9 a! s- |4 N% k
20160528183414692.png

6 U( G  A; l* t$ s; h; ]/ p/ K6 S# ]$ Y, L
该函数位于bsp.c文件下面;- z+ c3 C! J3 u) v; n! t# L; o
- P% W  c$ O# \! R. ~7 `* l
要使用中断,必须配置NVIC,这点也不能忘记。
/ W/ k) W. T* J" h1 {# b3 |1 t* M# ~: a3 K% F6 T1 n4 \" ~
⑤串口中断接收函数. ~8 b1 c* {  k5 i
3 e; j6 P) Y1 y6 |; i
20160528183420973.png
  X* T  ^8 T; q( p

. L+ ]/ ]  M( {  Z该函数位于stm32f0xx_it.c文件下面;
' }0 V. Z* ]2 {2 e( ^4 a: b! d7 M4 I8 S: q0 p/ ~4 W
中断接收到一个字符,就发送出去(可以通过电脑串口发送字符,STM32F0接收到该字符又发送给电脑)。
5 l2 s% {& D. `1 i1 @6 K+ h7 [& E; t+ N1 R. O' M6 k' c' [9 k8 I$ e$ X1 @
/ i* p8 R" }: G, W" F
9 z' h/ N% {4 K% C' C' D
说明
; p! I+ s3 Z& \0 n, _8 E) }$ [- \
' W* Y, z9 d7 [% @$ SSTM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片(具体请看手册、或者亲自测试)。
1 v/ \! ^3 T! M8 Z
; [$ G7 t% t  ^2 i9 G; l以上实例总结仅供参考,若有不对之处,敬请谅解。
' P& l/ Q/ i: U9 Q" T& H( ?* N) `  f- K/ K$ n# L7 J# C! p3 a
  p/ m3 [$ Q( d, a& n, H

& T2 h$ U. y/ t" g/ E
收藏 评论0 发布时间:2021-11-23 20:54

举报

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