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

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

[复制链接]
攻城狮Melo 发布时间:2023-5-11 17:24
串口协议和RS—232标准
) Y, t' @7 `" }( w% n串口通信协议:是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485
6 B, h# c+ I8 A5 v2 FRS—232标准:RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。因此,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。9 Y4 r$ d- B6 @8 u6 ~. ]

8 {% e, {8 S6 Y) j, H* YRS232电平与TTL电平的区别; v: e- p/ v* T4 M" u; w  A
TTL标准:
3 M4 I8 r3 F) u' WTTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。
2 a6 d: Q7 j! ?+ _RS232标准:+ c: D" Y0 t) f! U. r
逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,注意电平的定义反相了一次" S! U) x) G" F8 Y6 a; Y

4 F- z* ?1 A8 F- p' c" C- M1 [USB/TTL转RS2329 E+ N  d& v: N9 }
)QO54~[Q~}32WBX(8K076[0.png " s  q+ e0 B" F( G! [$ c

# E( y' c) Y$ i) w) P5 vCH340串口安装  r3 }" n2 K2 O4 v
: Z9 P4 q) r$ R7 u  e
3e2f978cc9cf45dfa55a1b2c4360e87e.png   r; r5 v; _: M
- F9 q' E  w6 B: ]& i
双击安装即可,检查是否安装成功,插入USB串口后,点击设备管理器,检查端口是否有CH3407 Z  C- }, Z0 `
8 Q/ p! Q6 c% H1 L1 Y
ad9072c2ac8640b4bbc660f23224da3f.png
( d8 i/ B- h- z6 N# T0 ?% F' V  {7 T% d; X4 X
& d( @- @2 ]4 w, U
安装stm32cubemx并编写程序
; F$ C! f  |( `4 v7 }$ g傻瓜式安装,把所有的框都选上( Q. B& l+ g7 q+ s7 _4 R0 D, K
安装完成后,点击help,下载依赖包" ^0 B, q& r2 ^

  F6 S: l3 R' l; Y5 j
ac4a84eda14b467f97955e2623e694d2.jpg
1 Q) Q3 u* y, y  }/ x# W2 j4 s
3 h* S" [' J; l
下载完成后,选择自己的芯片,选择前面的复选框下载,绿色代表下载好了+ B6 P# ~' u+ G: b  \& R4 `
你们选择后,点击install now就行# R$ D" m) ~6 F+ w1 L: \

( O: h; {- _) R1 y# \; O) T5 l
f89d4eef535f44748450be85262698e4.png . N# v" b* G) G4 V3 P

$ m5 y5 K$ z  x. I+ R: D& _4 r5 E6 D6 n下载完成后回到home界面。点击图中的地方,创建新项目) b- l/ U6 c9 I* C
* d& W9 R, I% J0 j7 u1 Q
93f884af97f5488abbaf366a2a72c61f.png % ?: M1 p1 h. K

  T0 F  P+ W. {4 E4 F8 p" j4 |: h- `点击part name输入自己的芯片,以stmc8t63 ]$ G; \5 G; }  ~. t5 C' a1 z
为例,之后中间出现的信息点击之后,在点击start project
7 I. O0 L- T" Q: h6 W- D6 E  Y& S: G/ C3 q
023f017954964c87a095208538e87b15.png 4 f+ D" l7 p( ~' H6 N) k/ Z2 {# Y% ~% h

7 k  p; l) X' y0 F9 C: i( B, Q点击system core,进入里面的sys,在debug那里选择serial wire4 G+ t0 N( u& B. U1 k& f

4 {. U2 _; F3 i& L. G
31f33bbac64b405fb096a49d1bc6fdbc.png
: R# z% y9 E6 [+ S. h1 ]
4 r+ A+ d7 B& ]/ f
12e93895a07d479dbf373c6993c1f5fa.png
  W2 Y1 v% S9 R4 h1 N( ^# Y3 }

: k  n5 N2 a2 x+ F7 s) J接下来进行配置时钟,进入rcc,有两个时钟hse,lse,我们要用GPIO借口,这些接口在APB2里
" b- _5 O7 E) \5 q1 t& {观察时钟架构,APB2由hse时钟控制,同时在这个界面把PLLCLK右边选上9 T% M- ]0 a9 F! j% `, ^

1 j- ~* A2 F7 W/ s6 i2 {% _# D
f0fd547873664e48b74f41477911e965.png ( C: t9 b- [" G' f7 Z7 P" Y

' y2 q1 o9 L8 q! N, e所以我们把hse那里设置为crystal/ceramic resonator就行了
6 e6 Y+ a1 ?: {+ A- G9 j5 \" N3 A- k* p( Y' `) @
070ccaee64e54cc492b4a8d522bcd31f.png
# K: a% k: B* `- c2 x. N
; i% O9 E# [. `1 _; n; z
接下来就是点击相应的引脚设置输出寄存器,output哪一项,一共三个PA73 u  m, h6 Z9 w8 N3 f7 C
PB9 PC15
8 E2 b- V. T; A# I' p
( g/ o, S' p1 g( t3 Y- @
a27cf9e25a154d2d9615672c414ef150.png ( }! Z0 F4 \8 H7 I

$ D# @7 x  S- e& @) H/ Q/ _接下来点击system core里的GPIO,点击引脚名,把输出等级改为hight8 ?' l/ \& Y- Z, X( e( e
mode不用改
# Z9 N" J0 P: N/ P+ s$ t# M- Q1 q' |! E' U
59ead86d28ff4d7297bfa61923e85627.png
  N6 ^3 k! P5 f1 G
# `- ]% }; ~/ Q* j
点击project manager 配置好自己的路径名和项目名,然后改IDE为MDK—ARM- L; S  l( ^& \

! V1 w( K. E3 i. |
c881621917784142b2f5d6ef969610e2.png
' x7 {$ e2 k" \: l0 x% t" E

) o3 z) T# O# F1 ^3 ^/ _进入code generate界面,选择生成初始化文件.c/.h,之后在点击generate code就行了; k2 s% c; U! K+ s
: q, D5 C, p& U* P6 r& \1 A
c67fe11176354f37a9c4fc47a948c098.png " I. [, d& {8 J, x
, a) O: U, l5 m! S" A) l
打开刚刚生成的项目将main.c的主函数部分用下列函数代替8 T& C7 ]) f, M4 |! E1 U# x
  1. SystemClock_Config();//系统时钟初始化
    9 _( T6 Z; s8 k( |
  2.   MX_GPIO_Init();//gpio初始化
    . ~( y, ?, \9 l+ n" z
  3.   while (1): C% V0 @, S+ b$ e2 _! X4 Q* Q) Q
  4.   {                9 R0 T6 ?$ j" g0 }# W* r5 s
  5.                 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);//PA7亮灯" O9 u) k" F/ e/ _7 {
  6.                 HAL_Delay(500);//延时0.5s
    , o/ m$ U2 Z1 Y7 o
  7.                 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);//PA7熄灯
    7 ^; k. b. {" ]4 F( j
  8.                 HAL_Delay(500);//延时0.5s               
    % l9 p/ X8 ?4 G& [* k, i
  9.                 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯
    2 k# r, b+ E* o9 \3 N, L" U
  10.                 HAL_Delay(500);//延时0.5s
    0 M; |* q! K) o8 h& _
  11.                 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯
    % C  r, J( ^. }# z7 v$ x5 B
  12.                 HAL_Delay(500);//延时0.5s6 n. v0 T# e* ^0 N2 H" m
  13.                 ' C$ f! L) ?5 K1 W) L1 C' v
  14.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
    ' `) s4 |) ^3 S; J" t3 x  ?( t
  15.                 HAL_Delay(500);//延时0.5s
    " }6 Q; K- _  s* N
  16.                
    " o$ e  W6 ^$ h8 N; z  n/ l# k' Q
  17.                 HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
    6 \) ?% F7 d8 k9 K4 Q( J1 u. l
  18.                 HAL_Delay(500);//延时0.5s# C' n* |' h" ]7 Y  _9 c
  19.                 0 k' Z6 R0 [: P3 F& f, Y. D# l
  20.   }# M. W+ k6 Q5 |: K6 I

  21. . F* L6 E! [1 n0 L& X! F
复制代码

. S% C. B* b& j4 N# P' k 22cb175110fa4a96af460c4e35d48ce1.png + N5 q# Z' D. n# ~
8 ?3 ?7 N- ^4 [6 a
在烧录运行,串口要断电置boot0为0,之后即可编译运行成功" m; A0 p; v+ O& Z3 d3 a

3 C+ a& j% h, ~' v! ]实现led灯的周期闪烁  Q) e& z, y( O$ ^/ Z$ T' k- m
5 x  C" W: ]5 L$ M& ]5 ]6 W
8NHG0KIWU$JA0ZNY4{A)0@U.png
. p4 N7 J1 N( ]: Z# d$ k8 M8 Y' U, L- {# L' j( m% f
进入flymcu进行烧录) j* y. Q, s! x8 h% \' C( l

  J; P3 `9 ?9 S% v3 v* y- q* s& W0 E
044d3ca05114434394681e15df707b18.png 5 `; [/ S& p2 A3 |
" L0 T( G3 N0 L0 M
效果图如下# ]" l, z0 v& g9 i# s, l7 m7 p! g

, u: j: _: M$ e" C8 f/ b
ff89631870d6418989529cc56ddb27ab.gif * i. A5 S' k/ l+ P+ V" J
3 Z$ m/ y2 Y/ x

" L" i; r1 C9 n用stm32完成USART串口通信
7 T$ H9 w' {3 O打开stm32cubeMX,进入我的工程,选择芯片,开始进入, k# ]; O5 I/ Y" {! g- E
6 b) E! a$ [$ ~6 h9 @& Y
159a7c0032b442119a729d978a72be29.png
- F+ Q' @3 D6 @# E- N6 Y0 p
1 \+ F: W# M( z, {- s8 y
接下来选择时钟配置
" {, |; D. N' I
0 i0 T/ m4 O4 y% A& q6 P8 I
4059a3e67e6145ada889513e1776e372.png - `( a( |0 P8 y; A; N, q7 S
1 Y) a* h: b0 S) a3 x
设置USART2,点击MODE,选择Asynchronous
" `6 k  h! r/ U' O
+ J: f2 P! L/ y# L7 o- T
bf3046a373f245e891b5f9af35f3208b.png
2 p) \  U: Z) l8 d" _$ ~
6 g5 ?0 |" ^$ O; q% e2 S7 n
接着点击CLOCK configurstion选择HSE,PLLCLK; K* r- ^# ~+ a9 p4 b: q
; n9 J% F1 V  d. k4 @5 t
bcc9107bf51a42ef9ba120a9d836a4f9.png
1 \4 b) J4 X- u, l" g# G

' r& `7 Z0 C6 Z/ J2 c' [% z设置中断,在NVIC SEtting中点击Enabled, H, A( y5 n9 u9 X, T7 i
8 X1 o: v1 K2 x/ P+ y9 p: M' Y
564cac8a34734fd8ac9c1c9170d36268.png 0 j; Z% [' L9 e2 ?) B! B6 N. S
4 s/ x4 b  b" B. Z5 N
后面设置路径,只需要修改Application Structure为Basic,在Toolchain/IDE为MDK—ARM,在Code generate勾选生成项目
5 B# ^" l( A6 }3 f9 `! E1 C
8 a6 A2 }# N' d' S, ]' w
2486d31a915a43838fb1b172c7a72174.png 8 m3 Z: n( O; L3 z

. G# d* F! T" \% g
5b4e5aa9859046309ae44797de05af6f.png / K( P. I) B; L9 J% |" p
  g0 P7 o4 ~( J! g( L7 W* m3 I
后面生成工程打开即可
7 K8 H9 L. Z# i( L0 ?5 x只需要把main.c里面的程序改为下列代码
: S- l+ K9 I5 Z, U
  1. char data[]="hello windows!\n";//发送的数据$ i0 x" U4 W" o& c7 V; G
  2. HAL_UART_Transmit(&huart2, (uint8_t *)data, 15, 0xffff);//发送       
    . R" }) _" q: q( u
  3. HAL_Delay(1000);//延时
    + V. d7 F( V/ @9 b2 T
复制代码

$ {9 |# d" A9 f/ A. H ff40a9c53a444b94b52db953420f5e8f.png
9 e0 Z( \. F3 R+ I. F. a

' e9 A8 i$ o7 m# w+ E后面进行烧录- T& |% d( ^" U' S
打开串行助手打印出hello windows
- P5 O* {- b  E* q
: b6 I) x4 m$ a3 \$ [
0e5d2290f35f4c6bbaec437ae636814c.png ; z5 G! L4 Q2 N/ q/ K
  @# x, w* s/ R, d3 n; U

% \. k0 D( c) M6 p2 U接下来进行波形观察
9 s: P4 M6 ?) M4 d" X对keil进行相关操作; Y) V/ O) G4 P# J; r8 F% x
$ Z; A% H3 Y6 ?; {/ V7 h; U
e4af5a84177e4ca1a5502f1a52169b6c.png ; D! m7 g' D) R! C: P

" O$ B/ T5 ?- G! m2 r( m1 _9 A+ q之后打开逻辑分析仪,选择端口,设置bit,运行就可观察到波形
9 E6 s9 D% L( p: ?5 p$ o% s+ ], ^, J& W: T
3b479d2791f74ef89814ac75615b5171.png
" {+ |# G1 N. k: e
  U3 L: {( Q; L$ I) t+ Y8 |: q2 Z
大约1s一个波形
1 j, g1 C! @. [( O! Y$ W1 R0 M3 s# C, U3 Q! u) k9 Z8 }
686dcd02ded24739b0e0e7e2248dd8d3.png
' Q- [, m" @) ?

" M* e0 G5 ?/ g4 @总结( j" f; @( L; D5 u7 W; G; N' {( h3 ?
通过本次实验我更加了解了stm32cubeMX的分装功能,更加了解到stm32d寄存器映射原理,最终完成了本次实验
. b* B0 D; O/ a————————————————
, T6 X# r1 P' A/ ~( m版权声明:&是梦都会空$ g, C" D" u2 }. w. H
如有侵权请联系删除1 r0 ^: S8 _" j8 s4 L/ K" }: x9 u1 \

& a2 c5 f# u  M- E6 _. t3 b: E6 b9 Z: h
$ u2 m5 g1 ?  e+ Q2 @5 }+ [- Y, u
! ?( X. J: I+ T# \1 f0 X
收藏 评论0 发布时间:2023-5-11 17:24

举报

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