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

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

[复制链接]
STMCU小助手 发布时间:2021-11-23 20:54
前言" \8 ]% h9 R7 f, S& Y6 U- u
串口对于处理器来说算是一种标配,也是在软件开发中必不可少的,那就是使用串口来调试信息(打印出相应的信息)。STM32F0系列的芯片,串口根据型号不同,数量也不同,从1个到8个不等。
9 V; ^+ p# p5 E) n3 s. M& f! ?今天主要总结串口简单且常用的功能,发送字符和中断接收字符。今天提供的串口发送功能将在后面的各个模块总结中都需要使用到,主要用于验证和测试各项功能的正确性。
: c2 T' R" _! _+ X/ e下载6 }/ f! ^6 B) `" \. l  W4 A# _
ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。/ E4 X; N0 F2 s' C3 ^6 w' V
今天的软件工程下载地址(360云盘):8 V6 ]( D4 i' v4 j( o3 {2 x: S
https://yunpan.cn/cS5TeTVUWdc7V  访问密码 9b8c' j" U' M* g' G' R. M
, T! H; w! r7 F; g
STM32F0xx的资料可以在我360云盘下载:
. W' {' w( Q; e1 T# Khttps://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c370 R! ]7 T8 y8 v

5 Q( y, m( C0 S3 w3 M! r/ F& G5 @准备工作
% {& T& {/ t/ `3 {7 A
! H1 U/ G, i; k8 r) E/ @3 f0 V①新建源程序文件$ p8 S" {2 n, K3 `8 {  x5 P

. x- @$ W/ i4 c) ^5 f一个工程项目在增加模块功能的时候,一般都需要新增加模块源程序的文件。今天提供的工程由于增加USART模块,因此针对昨天(上一篇文章)的软件工程需要增加模块USART的文件(usart.c 和 usart.h)。
0 r4 g2 i3 k3 C: m& G& a
8 a+ n( |( z' ?' p) w+ A; x4 V新建了源程序文件,还要添加到工程中进行编译才行。还有需要添加我们使用到的标准外设库文件到工程,我已经将文件新建,并添加到软件工程中,如下图:+ t; e5 ~3 k: l! p3 A% @

& g4 m* V: H' q( S; ?+ |2 v
20160528183341337.png

/ b8 A# Q% p) h& k/ `  `7 f8 r6 f- B7 r# v
注意:$ q8 O: m8 p; p/ C7 Z  Z

# z0 x7 s. J  N$ b5 y' N+ o0 G文件所在位置最好对应目录,方便管理。比如:usart.c放在bsp文件下,添加在工程中Bsp组下面。
: ?* y+ g! F+ h9 q- e5 r$ l, Y, p& ^2 v; T( \7 H
源代码详情
% |) q1 ?  g: I" {, m
- |3 f3 F5 b* B/ R) y' t①RCC时钟9 y) Y- K" X* H& E) o

' @. P6 ^9 L2 i, H
20160528183349228.png

; k: |! V/ o' W2 |" s. f$ j/ i% r: C0 ^) Q& [6 S( U: a% K
该函数位于bsp.c文件下面;  t% w0 b" ~4 ^( a5 b% m
2 k$ O, ?, r' n6 [8 M# L# U
我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于没有配置相应RCC时钟,让我找了很久的问题。
$ ^% Y+ m7 o- ?6 [$ _6 ]
! a7 F4 _3 f3 o6 |% ?+ x7 p# a# @②USART引脚配置/ ]+ A0 h, e+ J+ p7 E( ]8 h2 g. O, Z

/ K; @' E7 ?$ x9 ?. `
20160528183356478.png
0 ^) T' y5 {4 A/ Z
; I9 M+ C8 Q6 w0 b; I
该函数位于usart.c文件下面;3 \; w! G& R$ ^7 |$ ^8 I' K% O

* W/ K% H3 a3 W, S8 ]0 o这里的配置就是对串口收发引脚进行配置(具体参数说明请看上一篇文章)。% t5 q7 r1 j7 p0 W6 B$ W1 l8 x& R

+ A8 e9 w! u: t" S! f注意:
: ^* q# H9 p) d, k3 r% t; ?7 P( k/ X
0 r0 x% X( ]' W0 P上面红色框里面的配置是重点,必须对应配置才行。这里第三个参数“GPIO_AF_1”需要和你使用的外设对应。
$ r, ]0 Z& m! O" r3 w) Y. Y! H  G5 n2 Y/ c& l" x
③USART配置
7 F! W1 R2 T5 h1 x& p7 W( B9 g: l# N+ @7 S1 n! E* ?
20160528183405770.png
# L+ h8 L4 @- I4 _" q0 p3 {

' q$ f* {, J2 w8 a该函数位于usart.c文件下面;/ a9 f" ?) m- @% F4 h9 ~  l
  Y7 n- ?0 D9 t, w7 i
这里是串口相关参数进行配置,详情请看中文注释。具体每一个参数的意思,可以参看昨天方式,go to definition...6 y( b% ?6 [% ], J
/ T4 |5 y: [9 T
注意:
/ B) I5 B' z. Q; A4 v
; G. d- Z9 I3 y4 J0 c# o" r上面红色框处,如果要使用中断(我们工程是接收),必须对应配置才行。
" h; a+ X  e: {, k! s
* W  l' j7 a; U④NVIC配置1 q, p/ N3 ~# f% G# h
; w7 E$ ^! m6 g* D2 @. ?6 Y8 g
20160528183414692.png
8 {$ T0 m! }3 Y, w2 y) b

/ W  ~* E" `* u- o3 n该函数位于bsp.c文件下面;/ F, b  y7 U  F' I& g7 s
' q4 C0 ^! Z" {: n: W# M1 ~. j
要使用中断,必须配置NVIC,这点也不能忘记。
0 Q' u4 N! q6 C" ~  s5 Y  `
5 }% R! }, l+ Y% W" |0 C* {1 S/ S& T⑤串口中断接收函数
6 r2 @, e$ M9 i9 K
6 Y8 v4 V' y' g9 S' o7 r
20160528183420973.png
7 \, y" T% R; m( k
) I- a+ L" |. l6 i& t
该函数位于stm32f0xx_it.c文件下面;0 v5 L: e" z% A

7 a- P% X. N" J* h' V中断接收到一个字符,就发送出去(可以通过电脑串口发送字符,STM32F0接收到该字符又发送给电脑)。( g) o' D4 L, C' C0 C

- r1 i! ?2 \% k, `7 h8 q. G, K7 [0 l! `: E' |& G- N

7 Q% V0 P) n# e7 A5 O说明
6 P% P1 S: Z* r, n/ h( T* A6 x. o( M- m1 R# F( ]9 L
STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片(具体请看手册、或者亲自测试)。
9 N. K6 m2 _1 [5 [8 c/ r& G0 L2 v
. t4 h( ?6 ]! s1 c! ?3 I" Y以上实例总结仅供参考,若有不对之处,敬请谅解。+ u, y$ b4 D+ v. W3 j& C
* g7 Z- P$ `& J1 P% w4 ]% ~

( O: Z# Q4 U+ O9 @6 d5 b# y' Z
. l- T; _, |' b- z, x9 g$ `
收藏 评论0 发布时间:2021-11-23 20:54

举报

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