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

基于stm32串口通信和LED灯点亮经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-11 17:24
串口协议和RS—232标准
  Q0 n2 I. r' z0 v( a串口通信协议:是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485/ I0 s# a2 }% `" M
RS—232标准:RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。因此,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。& f1 r2 G2 ~, l- c8 y* C6 i  R
1 S7 g" W* r. P1 B( p* P
RS232电平与TTL电平的区别' W; n$ }& s1 _  Q
TTL标准:
' s& C7 n4 T8 {4 `TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。
% b* d6 }0 E  A. S% [* Y* tRS232标准:( j/ I" n! f( _; T& E* o
逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,注意电平的定义反相了一次) C5 P& G# T$ F  p9 i
6 g1 T+ Y0 U3 \, r
USB/TTL转RS232
6 X* F+ {( g5 ]' p7 i5 c8 { )QO54~[Q~}32WBX(8K076[0.png 1 P$ t) s6 C( V' [2 S; D: ~
1 D) v: b6 V+ m" P3 ^5 o
CH340串口安装$ @2 u4 O" Z) z' j! M5 ^' ~" q/ A

; t' \, }9 T  S4 r: ?7 H
3e2f978cc9cf45dfa55a1b2c4360e87e.png ) n. Z+ |7 @) S$ U8 u; N, ]5 E% H

1 c5 G0 i2 }/ _3 X双击安装即可,检查是否安装成功,插入USB串口后,点击设备管理器,检查端口是否有CH340
! R; F+ {* J, F( }0 E, V9 f& n. d. _: }
ad9072c2ac8640b4bbc660f23224da3f.png
( o" Q' j2 }- V* ?; o4 A# q
! @$ t& o2 S$ j% Q  F2 N8 G1 z
6 S1 ]' m& j% d- m- g6 c* z& r' i
安装stm32cubemx并编写程序
& I" \  E# o) Z& E: A6 ]% @傻瓜式安装,把所有的框都选上
8 m  T- i# |# H2 P2 N安装完成后,点击help,下载依赖包
9 V: C, z8 ^: J5 _* w- x. S( J9 O: A: y9 _8 m. w+ a
ac4a84eda14b467f97955e2623e694d2.jpg 5 _6 ^7 K# n$ K% A
$ Q. q$ |  Q8 L0 r8 s3 T
下载完成后,选择自己的芯片,选择前面的复选框下载,绿色代表下载好了
3 F( m8 i" y. [" I6 D你们选择后,点击install now就行
" h4 x/ E, C, B, M0 ?8 R6 E: w% Z  R' `8 |4 m1 C7 ?& s
f89d4eef535f44748450be85262698e4.png
1 L! q) F2 C2 ]8 G) Q9 l% X
5 E7 M+ A" ^3 _: l
下载完成后回到home界面。点击图中的地方,创建新项目
$ s" K4 d" K1 z0 ?  z& m9 b( O9 H5 O. |8 F) }. K6 ?1 U! ^: i* y
93f884af97f5488abbaf366a2a72c61f.png
8 B4 {, E, g* h# c8 e

; c0 j  Y% {* Y3 W& P7 ]点击part name输入自己的芯片,以stmc8t6% v& n( S2 i& l0 X
为例,之后中间出现的信息点击之后,在点击start project- F5 o  O! q: w+ }3 ~

( q" v& C6 G6 q( f* Q& }
023f017954964c87a095208538e87b15.png 0 f# A5 b% v5 b7 |; l+ V6 F7 O' }* r

8 {6 H+ J# [/ {, l点击system core,进入里面的sys,在debug那里选择serial wire# ?4 v) v3 n7 G$ y6 ?
( n7 f1 v* J  Q- A3 ~/ _
31f33bbac64b405fb096a49d1bc6fdbc.png 2 [) `1 Z* |6 G
4 W% t! j" A1 k0 u* _% p! l! w
12e93895a07d479dbf373c6993c1f5fa.png 5 ?* k7 r4 F8 h4 d" N. X
2 }6 x: B" l4 m0 ~9 J/ w0 p, K
接下来进行配置时钟,进入rcc,有两个时钟hse,lse,我们要用GPIO借口,这些接口在APB2里1 T7 p6 I3 Y8 \& D! ]* |( y
观察时钟架构,APB2由hse时钟控制,同时在这个界面把PLLCLK右边选上
: p& A* K8 J0 [; V0 {1 ?- \# V% T6 o
% c5 P8 H- h1 R
f0fd547873664e48b74f41477911e965.png ; u9 y) C( S  k+ p8 Y# d# h/ C9 z

7 E1 B% [0 n# r' o; n5 c% g所以我们把hse那里设置为crystal/ceramic resonator就行了6 E$ c2 a+ I8 `) @% z  P
) e: J6 Z. e( f3 m
070ccaee64e54cc492b4a8d522bcd31f.png
+ R. f! m1 g8 S6 g$ p+ J
5 G$ b! j+ I8 X7 ?
接下来就是点击相应的引脚设置输出寄存器,output哪一项,一共三个PA7( S7 P+ Y3 b& l$ l" F9 B
PB9 PC15% H4 u6 v' b8 s
# E+ @0 s  p$ v7 h
a27cf9e25a154d2d9615672c414ef150.png
) X& Z4 |& T/ f$ y& j( U

+ o8 `+ a% j9 h" n! L7 F接下来点击system core里的GPIO,点击引脚名,把输出等级改为hight
2 Z9 m& J8 [5 S+ f1 u/ j4 Lmode不用改
) ?+ C2 i9 Y/ O( t9 ?2 g6 B
5 I: P, p0 n% [2 Q! D
59ead86d28ff4d7297bfa61923e85627.png 7 t5 t0 ]' Q3 Q. z
, N  K+ X+ W4 G! h' r; q$ d
点击project manager 配置好自己的路径名和项目名,然后改IDE为MDK—ARM) u- ^) p: u: q
5 E4 ~9 Y, r. Y$ P7 D3 v0 V" B
c881621917784142b2f5d6ef969610e2.png
8 k; @. I  A9 O( E) g, i

5 t( ]3 z8 E- l  Z进入code generate界面,选择生成初始化文件.c/.h,之后在点击generate code就行了5 Y/ X) D: ?$ }

/ q' P+ P$ a3 M1 h  n" l0 q. n
c67fe11176354f37a9c4fc47a948c098.png ' Z( H- U/ D2 ]4 N6 ?9 \
/ v2 g1 y* ^% s
打开刚刚生成的项目将main.c的主函数部分用下列函数代替
2 b, M) C: w" ?3 J% w
  1. SystemClock_Config();//系统时钟初始化7 B0 V9 r( r. f" l6 ?: w, ^
  2.   MX_GPIO_Init();//gpio初始化! X* `% d! g( \4 d6 j" I* I$ P  m
  3.   while (1)1 z4 g' y: u+ I, N  I
  4.   {                4 w: f4 q$ H+ T5 ]
  5.                 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);//PA7亮灯* O( H- N  Q/ E  W3 C5 Z0 _
  6.                 HAL_Delay(500);//延时0.5s/ i( I/ \; o& O2 ^) Q: ~% [  l
  7.                 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);//PA7熄灯  D5 h6 P$ |2 |
  8.                 HAL_Delay(500);//延时0.5s               
    ) L% c) V) \5 @5 ^7 g
  9.                 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯
    # S+ Y7 c& w8 n; c, N& K" m4 ]
  10.                 HAL_Delay(500);//延时0.5s4 C' \+ W6 J* C% Q# z. s! ]: l
  11.                 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯1 Y9 s  _+ n- _/ q+ z  X+ ~
  12.                 HAL_Delay(500);//延时0.5s2 |0 Y' i. M6 W% `; [/ N7 ]
  13.                 , B9 s+ m$ l. r& y6 J/ |
  14.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯; H5 b: {7 A$ S' F
  15.                 HAL_Delay(500);//延时0.5s
    7 u- G- h  _5 h
  16.                 2 ~5 U& s0 y$ {& f8 \" J  C. l. v
  17.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯0 \* `! v' @+ }5 b2 K
  18.                 HAL_Delay(500);//延时0.5s
    " j  K# N; g! \" m7 b+ _
  19.                
      ]" i5 g0 v& t) [: i4 W; S
  20.   }
      [7 ]0 }# y$ z1 D% w1 n

  21. . `& w; y4 D6 f: [, K. M; L
复制代码
/ x" E+ G- V* I
22cb175110fa4a96af460c4e35d48ce1.png 2 A6 H7 N5 |! l  P7 p7 X+ C) E
$ o7 ]& p3 b; t9 M4 F
在烧录运行,串口要断电置boot0为0,之后即可编译运行成功
6 T2 I6 c( k5 q; P/ B5 i
* F; N" l/ X# Q* a! y- R. e- \) Y- x
实现led灯的周期闪烁$ c4 {8 g* T- a; @* m

4 k9 y" `3 g; l: V" W4 R$ i 8NHG0KIWU$JA0ZNY4{A)0@U.png ) ~0 `0 a/ ]- @2 W, f4 K
2 C' K' C: }$ ~7 y
进入flymcu进行烧录$ E" J% [  w; x& U

& c" I) W; C0 U  z& N3 X
044d3ca05114434394681e15df707b18.png   F* s% i. c1 t7 a0 L
( c& ]9 b/ g$ o
效果图如下1 k& a6 i6 F; w  U" G6 t
' Z& E  \/ e$ c' c  _1 H$ R
ff89631870d6418989529cc56ddb27ab.gif
( w0 W9 ]% `' [+ y4 l
; r3 E0 \" ?% |; {

. L) h( D3 e1 F: c& p; S用stm32完成USART串口通信! f& M: w3 v) v: I
打开stm32cubeMX,进入我的工程,选择芯片,开始进入
9 e5 I  {! u. Y( Y+ A9 r) v1 o0 P  v/ ^0 T1 ?
159a7c0032b442119a729d978a72be29.png
' f6 M3 C4 l9 e! u; S
2 i7 i- e1 M8 M5 x
接下来选择时钟配置1 c. M; d1 Y$ h- I, T0 D4 \/ w

' u: d/ D3 g7 V/ |
4059a3e67e6145ada889513e1776e372.png
( y' V6 T. @" t% t" Z9 W: E
. d# n$ T7 z+ R
设置USART2,点击MODE,选择Asynchronous
' o$ X/ P4 A. v, d' }
! s1 @2 g8 V1 t  l) o) [2 g3 `1 ]
bf3046a373f245e891b5f9af35f3208b.png % v3 d1 r; j* a0 N; y# }
( K. F5 K, ^* L# t
接着点击CLOCK configurstion选择HSE,PLLCLK! ~0 X' R$ j/ [0 ]7 f
, H& `3 p  w- ?! j1 m1 ]
bcc9107bf51a42ef9ba120a9d836a4f9.png
0 ~& F+ h9 Y/ }

" i9 G& L. @+ y设置中断,在NVIC SEtting中点击Enabled
) P. c* q) \) N6 N8 A
1 _. ^9 j. ~1 k* y; x. u3 a; d$ ]2 y
564cac8a34734fd8ac9c1c9170d36268.png : m7 v9 z7 c! f0 |( \
6 i0 I, Q0 j: {0 E  j- w
后面设置路径,只需要修改Application Structure为Basic,在Toolchain/IDE为MDK—ARM,在Code generate勾选生成项目4 ?  u% I9 q% h5 S0 K" Z

* j6 S8 C: Z6 S" Y
2486d31a915a43838fb1b172c7a72174.png 2 V/ X  _8 g9 s: V: N

* }/ j: h- ~$ r0 W
5b4e5aa9859046309ae44797de05af6f.png 0 u* @0 E- Q! n

/ G  ]8 U; B! d& T9 A, ]后面生成工程打开即可
- b+ o; k" M# f  @只需要把main.c里面的程序改为下列代码
; o3 o7 m# d+ E. ^8 v6 z. X5 ?
  1. char data[]="hello windows!\n";//发送的数据0 d  c; {; Z8 e, V) v- Q* d8 _1 j  v
  2. HAL_UART_Transmit(&huart2, (uint8_t *)data, 15, 0xffff);//发送        * V5 V  f8 a& W6 Q
  3. HAL_Delay(1000);//延时5 m& W6 O9 J" c7 J1 n/ ]) B
复制代码

  G6 w. s' _; ?/ B3 G ff40a9c53a444b94b52db953420f5e8f.png
, w1 ]% Y. N. _9 M' ]" r

1 Z; e4 t2 X8 V4 o! P1 w5 d后面进行烧录
! p/ N% O0 }+ R  v0 V2 B# ^打开串行助手打印出hello windows/ ]8 E0 v, J" t9 k6 _
5 _; B1 e6 J  c, z0 W  ]( v- y, v2 w
0e5d2290f35f4c6bbaec437ae636814c.png # K: ]. e1 L2 r0 c: G  z
4 ^1 O7 S3 t0 ^7 B2 y
. X7 G. e" }6 u- _1 E
接下来进行波形观察( K# N7 \0 W- _% B* Y
对keil进行相关操作/ h, b& n5 Y# X/ z9 o

* _8 c( E2 Y9 ], Z; o6 n6 K# s
e4af5a84177e4ca1a5502f1a52169b6c.png 4 E( L1 O9 v0 k) e' I* h1 @3 {

( v2 n* A( F4 g  F& c之后打开逻辑分析仪,选择端口,设置bit,运行就可观察到波形
" {3 g4 |0 F& g' S- e3 h( p8 P/ [( r4 ]" \3 b8 [* |- j
3b479d2791f74ef89814ac75615b5171.png ! @9 ]. W' A7 N1 U1 [
% |; Q$ \) h5 ]- J$ R  j0 V5 w3 x
大约1s一个波形
5 `0 o: N1 `, O( o' Y+ h4 E& Z
: u" w2 r. C9 g
686dcd02ded24739b0e0e7e2248dd8d3.png 8 a7 B8 e7 T/ `' }3 B# Q

" d3 b6 E4 v; g* ]% [. i5 T总结. f' J2 y+ P% T. e
通过本次实验我更加了解了stm32cubeMX的分装功能,更加了解到stm32d寄存器映射原理,最终完成了本次实验& v/ ^  f, \1 D
————————————————- ^, Q* u& e7 x% a  T0 O: i( L
版权声明:&是梦都会空
, S) a) i5 w7 v# h9 q4 M如有侵权请联系删除; S$ ?$ h0 G: }4 ~3 J

0 `& A# Q( i3 U& w- M$ V+ C' _( g- F' R+ e0 x

  S. ]% ~$ \! C- e7 m1 \/ }
收藏 评论0 发布时间:2023-5-11 17:24

举报

0个回答

所属标签

相似技术帖

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