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

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

[复制链接]
攻城狮Melo 发布时间:2023-5-11 17:24
串口协议和RS—232标准& d& s  M; K" Z  A  g- v8 y
串口通信协议:是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485
- Q+ |4 v( A- DRS—232标准:RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。因此,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。; }0 F. g# L! t; L7 \+ S

; q' i3 S0 ?3 K: I9 T" SRS232电平与TTL电平的区别
( [5 k: e7 K$ K! m$ i$ vTTL标准:
- w, A7 }. }6 m2 W- n7 m8 TTTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。( I% Z' D1 z$ D$ i0 v8 L
RS232标准:( k, v! a8 S+ M8 X& r$ Q
逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,注意电平的定义反相了一次0 k& ^7 V6 N) @* j

% u& i- B/ v* fUSB/TTL转RS232$ C4 Q' T7 Y$ `# s
)QO54~[Q~}32WBX(8K076[0.png
& u5 c- t9 n- m5 W3 W
$ g' [0 }" t5 s6 Y$ sCH340串口安装' g  y. _: W1 C2 a0 J
) U7 N( z( f9 v4 }' f: ?# G% L: k
3e2f978cc9cf45dfa55a1b2c4360e87e.png
# d1 n' f2 s2 U  N9 R' I
  U) {: `3 W1 h( X& m" E4 M: v
双击安装即可,检查是否安装成功,插入USB串口后,点击设备管理器,检查端口是否有CH340
% w( I' `/ F$ T2 @- {
/ C" a; O7 q) u( W% K  i, A7 i/ @
ad9072c2ac8640b4bbc660f23224da3f.png 2 u" }1 y* l" N' ?: E
4 G+ t8 K( I8 w7 X+ T8 Z; g
7 B' e$ W/ t' i0 p
安装stm32cubemx并编写程序+ [4 q7 S- f& M" ^3 E
傻瓜式安装,把所有的框都选上
2 S6 S) ~. r# |安装完成后,点击help,下载依赖包
, }' t7 t$ @; v9 `; T$ c* I4 f3 Q3 k+ T/ ]0 i' K
ac4a84eda14b467f97955e2623e694d2.jpg ( e1 N: m7 U: \7 ]

$ B! g# s! Y# N% y( W9 K8 d下载完成后,选择自己的芯片,选择前面的复选框下载,绿色代表下载好了
2 l) ?. ?1 p3 q1 m+ ^你们选择后,点击install now就行- w; F" T* x& {# ~4 m5 Y
. ^: i) t. o. y$ R1 S
f89d4eef535f44748450be85262698e4.png
4 V* ]) W! x4 R8 o

& n, t' V: }% K4 U下载完成后回到home界面。点击图中的地方,创建新项目
  g0 b8 D# v' ]2 p1 O. @, p- i0 J
93f884af97f5488abbaf366a2a72c61f.png
6 R  ^" y2 Y8 Z# H& I

, A0 p) Y6 m- R0 j点击part name输入自己的芯片,以stmc8t6
; x8 z' r  l6 I; h, Y6 J9 B为例,之后中间出现的信息点击之后,在点击start project1 M  K! @6 ^& H2 ]0 D

) h. V' C1 e8 O% S/ q7 V
023f017954964c87a095208538e87b15.png 2 C4 X  D& ~8 Q: O

  R- M3 x' C6 U4 _+ H  Q# K点击system core,进入里面的sys,在debug那里选择serial wire
' F; ]) u5 ~/ _& M: g/ ]: v5 o0 `) U  M, v
31f33bbac64b405fb096a49d1bc6fdbc.png
/ D3 d: o& ?4 G) h" `5 {9 K% T" H0 j" s: Q0 T0 J2 n, ^
12e93895a07d479dbf373c6993c1f5fa.png
3 D. @6 m5 F; U* |# G$ j7 v* x

9 e8 J0 o: y( g接下来进行配置时钟,进入rcc,有两个时钟hse,lse,我们要用GPIO借口,这些接口在APB2里" y4 ]7 ^6 C* x7 |7 W
观察时钟架构,APB2由hse时钟控制,同时在这个界面把PLLCLK右边选上
+ n8 t$ M7 R! t4 C1 c$ A0 L
7 g: b' @" g: B& w8 b
f0fd547873664e48b74f41477911e965.png 8 z# D# J5 P1 q
5 A8 Z1 ^  U6 ]! p8 R3 c6 [
所以我们把hse那里设置为crystal/ceramic resonator就行了
5 T1 g9 y" B; R1 ^6 `: v
9 ?- ?$ U; c6 b2 l& z
070ccaee64e54cc492b4a8d522bcd31f.png
. ^; b7 o* ]5 S& w9 j% c7 c

) b& a/ I7 W" ]9 g4 K! Z接下来就是点击相应的引脚设置输出寄存器,output哪一项,一共三个PA7
; T3 D/ h5 t, _7 LPB9 PC15" E) b2 v7 i" t1 F: F& [9 Y

1 ^$ j8 Q( k) ]( }) `' O, J9 J
a27cf9e25a154d2d9615672c414ef150.png
3 P. s& e+ m, u, q: I( D$ R

; {3 A4 L" w7 V2 d8 }7 S接下来点击system core里的GPIO,点击引脚名,把输出等级改为hight
- n! d( h% b& V4 I- M% jmode不用改
+ |+ I: L4 Z8 k* M3 B) `% y% P' a8 Q2 l& e
59ead86d28ff4d7297bfa61923e85627.png   R8 `4 `0 T6 J- i7 R; P
2 @3 t5 Y; R6 C( }0 O' k6 a
点击project manager 配置好自己的路径名和项目名,然后改IDE为MDK—ARM6 O9 P& V" \* Y1 z# N
& s7 v- s9 K' p" H0 l
c881621917784142b2f5d6ef969610e2.png ( i) \# D+ j# b1 ~# w

3 C" d3 W+ ~" N* F进入code generate界面,选择生成初始化文件.c/.h,之后在点击generate code就行了% [& Z* k5 t: A7 N; {

9 z* }  U6 h/ U3 L  e
c67fe11176354f37a9c4fc47a948c098.png
- f/ A3 K: d  s3 c

0 Q2 f  k! @/ K# L; }5 K打开刚刚生成的项目将main.c的主函数部分用下列函数代替
6 P5 b/ ?: R5 S! j/ |- Y) Z
  1. SystemClock_Config();//系统时钟初始化% ^$ f+ C$ ~: n- C
  2.   MX_GPIO_Init();//gpio初始化
    9 b7 Q* V5 r5 V1 E- _/ w$ m
  3.   while (1)
    - S: }9 r0 E) u% B3 [$ q' _
  4.   {                8 j. n8 W. L- G& G) x
  5.                 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);//PA7亮灯
    & X" @4 R/ L: p8 M7 j
  6.                 HAL_Delay(500);//延时0.5s
    - m, j! u, J  X+ f6 u! F, i( g
  7.                 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);//PA7熄灯
    ! z7 {; {3 f4 N: N3 u, [" p6 I
  8.                 HAL_Delay(500);//延时0.5s                4 o$ |. u  I# F$ v
  9.                 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯
      ?- i( @6 n; y# l
  10.                 HAL_Delay(500);//延时0.5s
    ! G3 [/ s# G  r; Z1 Y
  11.                 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯% b% H" z4 {. `. t# q% d; E
  12.                 HAL_Delay(500);//延时0.5s+ X5 T$ V9 o' B. o6 P0 ~) p9 ^4 y
  13.                 . N9 f! t5 J7 U) i# s! Y
  14.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
    . x3 {1 G1 P6 U& V5 @  o1 d" u) D1 r+ t, p
  15.                 HAL_Delay(500);//延时0.5s
    2 q# ~3 h1 v2 Q& @
  16.                 , ~+ B7 s9 A4 E$ i; n
  17.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯& F6 b7 w. f: ^& x
  18.                 HAL_Delay(500);//延时0.5s, i! {# n6 w1 D* z
  19.                 7 Y, z, _1 o% A9 @( d) a0 G
  20.   }8 p2 G& y* c( G  }8 M' S) \5 y
  21. : e5 V) P/ T9 K
复制代码
5 R0 {& c' T6 w
22cb175110fa4a96af460c4e35d48ce1.png
" j! X' ?  w! g8 X
5 s3 s: h# G. |; g: V在烧录运行,串口要断电置boot0为0,之后即可编译运行成功
4 s, O0 p; e8 P6 F) u

% N" C3 k$ |8 z- T5 L: z* s实现led灯的周期闪烁- J; M8 V/ \7 V* _, j1 H8 q$ K

/ c+ Y6 c& i* N+ p, I8 I 8NHG0KIWU$JA0ZNY4{A)0@U.png " M& B  e* v" c, g3 Z

$ [  n+ N3 M5 x# t8 q进入flymcu进行烧录
" W- C' {" r2 [6 C! o4 T+ ~- E2 h
% g" c: h  D! R+ Q
044d3ca05114434394681e15df707b18.png
1 E/ H4 P, V# y/ }/ ~; ~
' C" n2 y/ w' n
效果图如下$ P3 O' \4 u9 ?2 U
( c! h. }& A' Q7 T* ~
ff89631870d6418989529cc56ddb27ab.gif # P8 m# O1 c3 x1 R% W

8 b( r1 a: U+ h4 v$ ~, `

2 K6 v- a3 W8 f9 q( L用stm32完成USART串口通信; q1 O1 `2 A5 z0 ?& j( t' W
打开stm32cubeMX,进入我的工程,选择芯片,开始进入
6 T5 i; R7 a+ a; @
5 s9 ^, g9 Y7 ~/ k, ?
159a7c0032b442119a729d978a72be29.png & `8 @! w( o6 ?- R8 |9 Z# k

5 ^0 t. l( X$ O9 I5 b3 |接下来选择时钟配置
1 a* o0 i4 X; P+ Z, p, h0 T* O1 ?, ?8 n
4059a3e67e6145ada889513e1776e372.png
. v8 Y8 b* w" |/ v7 i% h- c$ T% g

+ q- m+ C3 G; h设置USART2,点击MODE,选择Asynchronous4 D3 Z+ O% Y7 L$ S2 p  V

4 M6 [1 H$ Z# A
bf3046a373f245e891b5f9af35f3208b.png ! {; D4 d. R" N

& U+ ^/ v, c7 a# q( L* p! U接着点击CLOCK configurstion选择HSE,PLLCLK  J  Y) x1 l; t
, v6 t' D) |8 ^0 l( m
bcc9107bf51a42ef9ba120a9d836a4f9.png
; g$ Q% ?2 ^. C8 z8 f
8 b5 [# T4 |7 A6 ~/ \
设置中断,在NVIC SEtting中点击Enabled
5 o% z2 s! R9 O# M6 ^  G6 Y; `+ l
( ~" s1 S& a! f5 K( ^
564cac8a34734fd8ac9c1c9170d36268.png
- `# c& y" y% J# N4 b0 V

+ C3 E$ ?" J2 M8 V后面设置路径,只需要修改Application Structure为Basic,在Toolchain/IDE为MDK—ARM,在Code generate勾选生成项目/ b  w: u5 M# s8 u8 N5 T( M' `  D

' B/ O/ q, h6 V8 e) E: E
2486d31a915a43838fb1b172c7a72174.png ; d, m" v/ t3 K! }: M8 u% s3 Z
% {4 R) X7 ?, h9 \. u1 B
5b4e5aa9859046309ae44797de05af6f.png
4 _5 z0 d6 H' W+ P: }/ M1 U. n
8 E- |+ b$ M' K  ~" A! }
后面生成工程打开即可
- ?& ^0 \/ ]8 c) j; R只需要把main.c里面的程序改为下列代码6 n" d- u$ Y; D. D# Z# ^
  1. char data[]="hello windows!\n";//发送的数据
    9 a: t5 d+ O* q( H
  2. HAL_UART_Transmit(&huart2, (uint8_t *)data, 15, 0xffff);//发送        ; {- N  k2 m2 }: X$ R& ]5 A
  3. HAL_Delay(1000);//延时, Y/ o8 |1 |/ K2 {: \6 n  ^
复制代码

+ ^# M3 R- y9 l% _ ff40a9c53a444b94b52db953420f5e8f.png 7 u/ M* n2 D4 Q; b! }5 a% `
0 m) w# ~7 P) O% I9 V
后面进行烧录1 R) l+ _4 j6 T$ v. B% W7 A* O
打开串行助手打印出hello windows5 Y# u, H# `/ H& g6 d) D. y
( V* {4 O6 N( ]- U
0e5d2290f35f4c6bbaec437ae636814c.png
: y* Y' R! d4 n$ l
7 c8 j$ ]$ e9 K% B
2 n/ r3 p2 p( O- g
接下来进行波形观察
8 G% s/ p+ h4 p! j对keil进行相关操作+ F( }& e& p2 R: L
# J7 o9 @$ F, y% K0 ?) L
e4af5a84177e4ca1a5502f1a52169b6c.png
7 h% m" T% j8 K# N6 ?' X

/ L3 w9 S9 F1 S* m0 G之后打开逻辑分析仪,选择端口,设置bit,运行就可观察到波形# V( f; C! p2 f2 @+ w+ \1 R
, U. l+ |9 e  L3 d
3b479d2791f74ef89814ac75615b5171.png 5 p4 C9 u$ q: I& I% L; p9 c8 m! \# `6 e
, r$ x- m* m. i' _$ o
大约1s一个波形/ b* R/ ?' R# ~8 n( f+ |# ]
! k* t6 R4 O" ^* A& @8 C: a
686dcd02ded24739b0e0e7e2248dd8d3.png 9 P# B8 Z0 o& R; Q6 M1 C" y6 Z# o
2 m4 n5 {- k9 M! o' K
总结
5 l* o8 D2 U/ i+ S通过本次实验我更加了解了stm32cubeMX的分装功能,更加了解到stm32d寄存器映射原理,最终完成了本次实验
9 w; u) T' T/ `/ M- H) ^$ ?4 z0 \# @————————————————% U  ^* r0 E; P# _  i+ K
版权声明:&是梦都会空. m  y/ N5 G0 v9 X, w# i% \
如有侵权请联系删除4 r5 S/ X( ~/ O% v6 R

' P' m: V8 k/ b3 ]$ D' M( r3 h6 W4 @9 G! b' m5 ^

$ ^: I% H2 Q) S9 j5 W- T  _
收藏 评论0 发布时间:2023-5-11 17:24

举报

0个回答

所属标签

相似技术帖

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