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

STM32G431RBT6--LED模块入门

[复制链接]
STMCU小助手 发布时间:2023-3-3 15:00
一、利用STM32CUBEMX生成工程框架! C2 ?, D5 J! x7 c& {, L+ y
1.选择MCU" W& b9 [, J$ o5 k: x
# P" N# n, d  U  I2 m  U- r
e4a30991c3254615b2ef60c228eeab4c.png
6 ]3 R" R' A; N! W* N+ _& b+ t
1 S1 Z, H* P+ F# _" J+ M0 U
9b88653a54144840b1c4fa4781e94a0a.png
0 V: m; K, x( v* ?- `% I5 z  Y, m! r* M5 S7 w7 f. I" t  ^6 i7 T0 i2 r

, {; w3 l+ T$ K4 L% p* j6 G0 q 2.配置时钟
$ Y3 o; h$ t. x5 i7 N( M9 ^0 h) Q; Z" R3 S/ t, C+ y
f1d5505a8aa549b0a76ce04d494c5319.png # w+ p8 F+ O  {2 a; o

& E; b3 m1 Y, t% f0 t/ j5 S- a* z 3.配置GPIO
' e; }# h+ A0 H8 D
4 E6 _: k- c& N* `/ C! V
7542e23a70e54883ae1bfe680ed02e42.png
- j2 |  \5 C/ ~! |1 U1 X3 w, w; E
  w, O( ~5 ~' l! }4 A3 l$ V2 O
4. 配置Project Manager
& h8 o% e9 Y, ]! h& J3 `* a% x. X. ^' d4 {. ^& l. ~
dac2975316764ec0b34eb0d3e719ccda.png . d8 k/ y( P# g7 }& ?
2 k9 V+ S& k: `8 E6 Z  d5 b
a46e2460aa9e4f8dbe354b33c83b1589.png 4 ?3 W6 Q3 i/ ^- }5 b
8 h; B, C4 e& Y8 G# u/ K- c

3 a3 a7 r7 _; }# M6 O二、利用STM32CUBEMX生成初始化代码文件) p- D  m0 }0 N: E# k( h, N& a. F
5.打开工程文件
) e' S( [% h1 S+ ]; D+ ^7 M  W$ D7 h
48f076bc9f4b427fb6d2f9acae554c13.png
# ~& n( e$ v- q' U% `
8 M9 O9 V! a; k1 }+ D2 [( ?
c207bb60e08d472387c7297d7843a3b9.png + W" O! i) l/ k: u! g

) o* j6 B) y# T* T' m$ b5 @' y8 ~( z
6.编译Keil代码--生成的框架是否有错误
3 Z) ~% b: F/ }1 y( e* R5 _& U/ U, K9 C. m
802e07e1fa1f4f648875769c3cb64294.png , C2 L% u8 l2 Z( f0 H/ I  Y
2 ~/ I4 x* k: {- c
7.按模块添加代码
3 T" u+ V* m* _) @9 g  i" W: _7 i0 Q! g
在gpio.c中添加代码: c  ^8 L2 N7 w
8 v7 y% B4 i/ J
7c3c204564094cce91862ac3e8c67f5f.jpg 3 t+ J8 f3 X0 a4 ]' X$ y
" x% _0 K( L0 g, c  Z
在gpio.h中声明函数0 K5 a& s( E, n2 t5 _

( }( r! S" s4 M3 y; v
ddbecff5184847d5af4769d3a20c6efa.jpg
- m8 x/ ]) `1 ?  N% Y+ T  |( M# z% ~% H
在main.c中调用函数, T0 t2 {; i: |3 {5 m* x1 o1 ~
8 m& r: w. t  J# j
1f11ed23e02748a88a8e65886be644cb.jpg   }% q* k, X/ F3 I- P% Z

% j0 C2 o. l5 r* C" o: U8.配置Options
: m' f) |# X, ]3 ~; y5 Z& I! d& `
bc83f022618748e79772ef11b02b8bca.png
; J; C  {: e+ x
! W/ w. A! r6 P, W! a
ef19445adb3b4aab9efde3e1c7bd1b11.png
" i' M/ b7 k; @, g
+ O1 P' d3 S; q1 U
b057eee90400447bb2307b3b4070a886.png " ?8 r  }" f2 [( f" _6 i

% `1 ?$ s4 i; b, Y% D7 |+ ]$ U7 H( E三、测试代码
  J" V& a4 h) R3 d8 I/ H9.下载运行- r5 Q$ [! A7 F+ {
. @4 G6 H: I. \, F' `6 M
01a415b61e85414da7a87d95c236f602.png 7 `+ x' q6 X& `4 S2 R: i
/ T; g  s" o: d
10.实验结果
2 ]. B+ n* o& Q2 H) T  I. R& S$ Z8 F(1)LED_TEST函数的结果" s- c4 a5 [( n5 N

: r$ O0 V) O# X& w
719df45204834f6eb36c49ec843e7c88.png
$ L9 {: L$ @) a# Q/ c
9 q  k8 a* z% v' P9 r (2)LED_Disp函数的结果
2 H3 f% H3 n$ }- w8 P% A. g首先解释一下这个函数的作用就是可以控制LD灯一个或几个同时亮,比如我传入的参数是0x44,转换为二进制即为0100 0100,1对应的灯就可以亮起来。 ) A. S( G1 y3 ~) E8 z4 \) B* z7 ?* {

7 Z) n" [1 L8 V0 N7 N/ l
5c0710f578674ac6a1a9729996e0436e.png - {8 B+ c8 h8 t+ P% A' M1 K1 q

, o  Q" ]8 y' \3 t% t: K9 M 四、函数学习
/ ~, B8 s4 H! R8 y- u- g0 b想要学习哪个函数就直接右击去看函数定义即可。
3 b+ M6 _& a( ^4 j) `: v# L8 o8 C; o' z& a: _
dfe167843f55437cb483890951560d0c.png
* M+ G8 x; s  O, n7 W* ]! C. Z# d. M* e) z4 n5 u

& ^  j- X* P5 q(1) void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)------翻转电平
! r0 y: e( x; e. q" Z0 T5 c8 A3 b) ^+ E) A" y
参数解释:  q7 n( q8 m( h1 k0 @8 o5 o" G
GPIO_TypeDef *GPIOx:x从A-G( M* f: Q( I7 n$ S# V# p
GPIO_Pin:可选项如下
3 A8 U* _* B8 W# K% ?; i5 R0 r/ V' {$ ?: G, M) t9 M% `
e2f6d4e92c8141b3bd0559560d74d7cd.png
( [8 X6 ~! M( a* ]

; S9 z& G# A% K) M5 r- {" G 例如:例:HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);翻转一次PC8的电平
) H  `* V5 x6 d' _( R2 m; R: J
+ ]5 E5 g+ P. ?& F/ ~* b5 E, E (2)void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)----写入
5 N$ q0 W5 j3 g4 T! q3 `3 H% J1 p4 D/ @4 Y0 ?+ F
参数解释:前两个参数解释同上1 r+ r! V  j2 @5 H" Y! w

* g1 S+ v8 o! X4 C0 b第三个参数:GPIO_PinState PinState取值如下:. z2 G: w/ z- ]; l! L# a7 h) k& f1 Q
  N2 @9 C; n8 w, {
GPIO_PIN_RESET   低电平- Y( ?( d0 o8 U+ K( V

# \2 d1 ~% {! I$ f7 T5 B& `GPIO_PIN_SET        高电平- w2 Y3 i. J& h! x6 e8 V6 Z  C
! H* U: ~* W5 k. t. @
% S9 W4 r5 d4 Z. ]6 c0 U/ R+ M: f
五、问题总结* N6 i! @: z" o, I. T; B* g
在用CubMax生成框架配置GPIO初始时为什么要把每个引脚设置成高电平呢?+ H8 ]2 e4 T+ I7 |
" |9 M; R4 h, q: P% c5 j& r# J
解释:
' H1 @5 @1 Q/ L' n" `0 ^/ V- g3 L8 f) r
2 E/ [* _; L6 C" M
首先看一下LED灯的原理:$ f9 V  W2 B% X6 U8 U

7 e( R! o, ~5 z! I0 W& D1 F
a4a131a9fd4e4ab2b257e91484a20fd8.png
+ o3 D1 c7 ~/ V3 \5 E* J! T& @$ ^/ u* t( p/ t  X
LED:当阳极电平>阴极电平时,LED导通发光% p3 X$ n( X2 G
当PC8为高电平时灯才会亮,
! n9 Y0 i; ^  U" B2 X* x: t当PC8为低电平时灯就不会亮. n8 c8 p! E# a

: [/ g  }3 h! T' ?$ O
1910998b44f94b09a801c213fc1c14c9.png 2 [* w; U6 r) k

3 L' q3 ~4 F: _ 当PC8-PC15为低电平时,灯才会亮,因为初始时希望LD灯不亮,灯的亮灭有个573锁存器在控制7 L5 F  d! E% G* k- a9 [" }9 |
& `5 j' _: _1 P% b; {( Q* ?
68f707bb91d44e178538ade9d7484210.png
8 |/ e. }7 [! `. a5 v* h7 g7 |: y2 X/ n' O
97739f9315ea4faf895eff2305fb26de.png
- u4 r7 o9 S2 c8 e4 M) E, C
% O/ |7 i: O; R" N# E2 N$ O. [因此初始的时候把PC8-PC15都置成高电平,灯才是熄灭的状态  I! a# o% M) [
————————————————/ Z8 S7 W# W. T5 q; Z
版权声明:想要优秀点儿8 [5 J4 B. m  b! F. w& H! G8 x7 s

9 [: _9 e* z4 L# I
收藏 评论0 发布时间:2023-3-3 15:00

举报

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