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

STM32G431RBT6--LED模块入门

[复制链接]
STMCU小助手 发布时间:2023-3-3 15:00
一、利用STM32CUBEMX生成工程框架3 r+ @* E( g; T3 ^: M
1.选择MCU
" F  n  h0 X; a
$ {- U$ C/ S# E2 r; H4 N
e4a30991c3254615b2ef60c228eeab4c.png 3 q- V7 W' N/ d. K+ p

1 G" }. P  ~2 Y; q+ D. o
9b88653a54144840b1c4fa4781e94a0a.png ( b2 P& D+ u$ Y& [+ K
$ b: s+ g* D' z" e" t
/ a  X+ Q0 x1 H3 @( N; H" }5 a5 i
2.配置时钟" ~" `- q- t/ r. X

/ Y+ h: N, P9 \& `
f1d5505a8aa549b0a76ce04d494c5319.png
' p3 {% N  x/ Q$ t9 P

" `  d2 ], r0 d# y% A 3.配置GPIO" C* h3 _- A- ~8 I% J
" U6 {: j6 u: o& L5 G3 ?; e% c
7542e23a70e54883ae1bfe680ed02e42.png % z- x) c2 H% b/ B! w0 F

3 E; ~) t# V$ S4. 配置Project Manager; z) m, b. o# C& j
3 o$ x- `# k# _3 _' v1 z
dac2975316764ec0b34eb0d3e719ccda.png 5 F+ E* r* G6 O+ ~

$ v. c$ j& N" f
a46e2460aa9e4f8dbe354b33c83b1589.png ( M3 I# {6 h- @# t

6 ^! B" E% G" n: F. p) o/ Q% N
1 P. v+ S& G0 c' x5 Q
二、利用STM32CUBEMX生成初始化代码文件
: J. X' G* I5 f: u: h2 B3 }4 U; X/ ~/ s 5.打开工程文件( Z$ @2 l9 C% x& H$ S2 C
& `( M' b0 S# y* U  J
48f076bc9f4b427fb6d2f9acae554c13.png
# ?9 U% N1 u/ k* j
- Z9 E1 j  E5 ]; ~- y1 p0 z
c207bb60e08d472387c7297d7843a3b9.png : j1 N0 t: b0 `) _5 Q' \% Q
% ~" y$ ~; B* S: A
6.编译Keil代码--生成的框架是否有错误
2 c# e/ n: @8 X# d/ V, A
# u' X9 P8 [- L7 j0 q: U
802e07e1fa1f4f648875769c3cb64294.png ( S0 e1 o+ V! H0 {. l; U" p

( _/ w, N$ j: B# l1 M# N7.按模块添加代码
  @. z0 [6 \, _3 U; h# h. O: g5 i
4 c' D/ k2 u& Z在gpio.c中添加代码2 }$ `0 f( a; i1 V; l1 p
& J# H/ x/ _9 P
7c3c204564094cce91862ac3e8c67f5f.jpg 8 j8 J+ y! c$ w/ l% h) S; M; P
5 |9 s0 q8 H& u
在gpio.h中声明函数
2 D  k. z1 i0 e8 g1 o* F
8 N9 E% {  ~, D4 V
ddbecff5184847d5af4769d3a20c6efa.jpg 3 S  H# G, H9 x' D3 W

7 `  n6 U; H0 q9 J0 _/ E
在main.c中调用函数
! p! i3 q! G2 O2 |( V( M% q9 U4 o, d9 d
1f11ed23e02748a88a8e65886be644cb.jpg ) B2 u8 R* N- ?6 V$ K1 m" P

) L) m' B! U. y) A: p8.配置Options! `! |: ]1 Y# |% P6 \  i' L1 w' u

2 u9 V: G+ B, L1 k
bc83f022618748e79772ef11b02b8bca.png 2 w9 m0 ^( ~6 Q. b6 J" L  e

1 R" ~; |1 M( w* J! E9 `# Q
ef19445adb3b4aab9efde3e1c7bd1b11.png # N$ f+ |0 B6 p3 G
$ q4 y7 T. h. P6 s! R, z
b057eee90400447bb2307b3b4070a886.png 3 o/ h! z; z" {4 J

/ y1 }* s9 `) o4 H7 y/ i6 ~" |3 `三、测试代码& P6 @- C) g3 a, F* C
9.下载运行
+ K) w) `; J! A0 N+ ]4 R5 P9 P; O
8 F& u3 N, B! Q% |
01a415b61e85414da7a87d95c236f602.png
6 U2 ^6 [$ W$ S* p: g# c& W- M4 m+ b" h8 I4 [. P8 O
10.实验结果
- W. g3 v. D- G1 v1 N8 |1 P6 z5 E(1)LED_TEST函数的结果3 F& A& M. R/ m! t

. D% P5 o! e3 _
719df45204834f6eb36c49ec843e7c88.png
9 I* x- R9 o: l* w* ]: ]. L% s: N. P) R% e0 }
(2)LED_Disp函数的结果: v7 k) p4 u& g# [( ]% G' w
首先解释一下这个函数的作用就是可以控制LD灯一个或几个同时亮,比如我传入的参数是0x44,转换为二进制即为0100 0100,1对应的灯就可以亮起来。 : M' `7 P  {$ y7 \& a" b

3 r5 \: @* v+ w) y4 u$ k
5c0710f578674ac6a1a9729996e0436e.png
, P! z5 ]" H4 H! P0 L' S$ A3 I
8 P" Z5 P# \% A1 t
四、函数学习
2 P) L" @3 U% c4 E/ ]3 O8 \" t想要学习哪个函数就直接右击去看函数定义即可。$ N* E, I- L9 X! y* N7 p' t

9 W* `4 w. n2 Y9 x
dfe167843f55437cb483890951560d0c.png
5 p6 g) [6 Q- d; p; Z/ M6 D: O* ?8 k9 @3 H: C+ b. M* P

, z; d" [  P5 m(1) void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)------翻转电平
7 k/ w4 b6 J/ Q# S* h& h  y" E1 B
1 z9 V* i; s# t8 D# f参数解释:
$ v% r' N3 O4 y' r5 V GPIO_TypeDef *GPIOx:x从A-G
" {! r: t$ f' K7 E GPIO_Pin:可选项如下' U4 P8 y$ l& c% D: ^; v$ j) S6 f
$ R! ~" `' d0 j4 M7 n
e2f6d4e92c8141b3bd0559560d74d7cd.png - e% i& g9 ?7 ?3 ?) A- U

" v( f3 j8 {" r 例如:例:HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);翻转一次PC8的电平
# |* ]1 U5 k+ k7 \9 ]) z' k6 V4 @
+ ~- A' e# |& P: j( L) E7 N (2)void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)----写入! V* Y# V$ Z% r& w) l: ^
* l) T5 ]# c/ V" K2 Q& Y# Z
参数解释:前两个参数解释同上7 `! \2 R# S" }& X1 E7 G5 d
4 `2 p" `6 U! u& h$ B; y4 Q6 ~
第三个参数:GPIO_PinState PinState取值如下:6 `) }! }0 A6 [
; z* y- `# t8 M+ W, l7 `+ r
GPIO_PIN_RESET   低电平
$ {8 x$ `" F' E: b, [6 |1 t$ a
3 N2 k! |1 }$ Q* m  tGPIO_PIN_SET        高电平
; w1 j1 X& O0 f* B* G+ H& Y
* j7 R1 x* A0 s) b) Y# D: I+ G1 K

! f' Q, N; ]& [7 ?$ ^五、问题总结  {8 _$ w9 E' _+ _# Z) L* N- ]
在用CubMax生成框架配置GPIO初始时为什么要把每个引脚设置成高电平呢?9 t5 J$ G0 R' u  q& K4 k6 p! |- x

  v- g) {# [( u5 l7 D
解释:
+ I- j$ s/ I- H  D  s5 L% Y0 ?# ]: J6 E! j% N  [( M
首先看一下LED灯的原理:/ D/ ~1 @+ J" z. g8 J
6 H9 @6 v6 s& K$ a) }
a4a131a9fd4e4ab2b257e91484a20fd8.png
( |2 A$ U- M' C: X  |) t! W% D! R1 K7 G
LED:当阳极电平>阴极电平时,LED导通发光
# l; k# W# T4 I6 v当PC8为高电平时灯才会亮,/ L- O! b8 e& |: z8 q2 o* B; i3 u) e3 u- v
当PC8为低电平时灯就不会亮+ p8 N1 c4 ^7 Q. D! T: S8 O4 p* T

5 }! ], ?/ f( Q, f
1910998b44f94b09a801c213fc1c14c9.png
) K; V9 `9 ?7 ]: U( M

/ p& m. v+ q, k2 h$ ] 当PC8-PC15为低电平时,灯才会亮,因为初始时希望LD灯不亮,灯的亮灭有个573锁存器在控制
4 q' K& ^2 V' Q; a& ~4 D9 V! g2 D
" w  G9 h% R+ ~: k
68f707bb91d44e178538ade9d7484210.png
  J0 ]0 }& S! [2 o. A4 m* P. c" z+ g6 e: R. i8 Y: ~. ~
97739f9315ea4faf895eff2305fb26de.png
' k  k" \% u; ^# c4 w: D' I5 L3 i/ o7 A5 G. O8 ]
因此初始的时候把PC8-PC15都置成高电平,灯才是熄灭的状态
; v! I: ~1 L/ Q5 `! `————————————————& M: g, W, H8 a; S& \  a0 U
版权声明:想要优秀点儿5 A5 O- u& y$ W& @( s0 z
8 g0 S' t1 u$ P2 S
收藏 评论0 发布时间:2023-3-3 15:00

举报

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