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

STM32G431RBT6--LED模块入门

[复制链接]
STMCU小助手 发布时间:2023-3-3 15:00
一、利用STM32CUBEMX生成工程框架
/ m" G) i7 R: H* A- Q1.选择MCU5 `+ t: {2 O  D- G& C2 m
- e( b: P& l5 d/ o7 S) |
e4a30991c3254615b2ef60c228eeab4c.png " _6 x) K1 S- I" ]. B2 T3 a# q

% G6 b# V1 `5 G! a5 p
9b88653a54144840b1c4fa4781e94a0a.png
: [/ y6 w9 F. s7 f+ d3 I  }0 q6 q3 H0 {

2 l( J2 Y7 v% d4 r 2.配置时钟& I, Q+ y! C" R
% G) ^) \: n( P! D; {
f1d5505a8aa549b0a76ce04d494c5319.png , ^, _) b% K5 s4 ]

4 F3 E1 Q2 J0 A; Q: q5 d6 c1 g" _ 3.配置GPIO
& x, s4 h' s% a$ }
$ w3 E4 e* `  w% O8 L; b
7542e23a70e54883ae1bfe680ed02e42.png
) r6 A. O  E; w, n$ o4 U

1 D, U( P! h+ d' c! U, X5 K$ R& R4. 配置Project Manager2 ?2 g. w+ Q3 o3 O# F/ T' k5 L

# d2 M2 J  h4 F# C$ O, f9 z) Y0 j9 N5 T
dac2975316764ec0b34eb0d3e719ccda.png ! }- s9 _4 L3 J" ?+ X
4 m3 Y% b% r9 d  O% B% L
a46e2460aa9e4f8dbe354b33c83b1589.png
" a* {3 Q4 n2 t" V2 {% F9 h6 \9 r' w& k+ D8 I. w
6 ]7 `: O. K" r$ q
二、利用STM32CUBEMX生成初始化代码文件8 l8 ?0 |& X! G; {- x
5.打开工程文件" E0 E( W! w$ ]. a) p" J
' L* W! e5 o: A$ o# h, L9 y
48f076bc9f4b427fb6d2f9acae554c13.png % M% k  U6 U5 l4 u

! k6 T0 G% @* c. ^9 P! a; T  T; }) d
c207bb60e08d472387c7297d7843a3b9.png
1 y. S4 g: T# r3 ], P+ p) w# `1 ^% g# M2 s  u# G# a  r
6.编译Keil代码--生成的框架是否有错误
0 A, D  S/ ?1 a/ |) z5 O7 q
# |4 O* N2 y; [+ ~" M: ~4 P
802e07e1fa1f4f648875769c3cb64294.png ! W5 L7 i5 t0 d2 U. G! w5 u
4 }! _+ u, H/ L1 P
7.按模块添加代码
; v! @4 k4 H$ D2 E( n: J7 y9 y: ~' H/ k9 o
在gpio.c中添加代码
- D5 y; c7 n6 m# Y& H) D
; s! e( Z, j; e( Z" |* d6 C. O
7c3c204564094cce91862ac3e8c67f5f.jpg
; ?  Q; V/ t7 l5 A  S# o9 @* p. I! b) L% u; p& u
在gpio.h中声明函数
3 Z( T% q8 p+ ~8 s% E1 B% G% @" I2 P9 ^6 z9 f' ~% J
ddbecff5184847d5af4769d3a20c6efa.jpg
. n( e. q' Q3 D' K. i; R: c
4 |9 Y$ {% l. y' Q0 d8 @! n6 s
在main.c中调用函数
3 S+ I& I) P7 J( u+ A
! {5 ]6 r! ]/ h6 L/ D6 N
1f11ed23e02748a88a8e65886be644cb.jpg ! r4 ?1 I+ Z0 C( ?( @2 D- ~0 P' s

" `: P; Q* k: N& E& S8.配置Options
# m7 {. C: V4 Q- P1 U% r7 f$ S3 f: r+ t9 w- C
bc83f022618748e79772ef11b02b8bca.png , w, r5 R4 B5 Z# h7 C1 A  S6 w

8 f* T0 z3 Z$ q  o( a
ef19445adb3b4aab9efde3e1c7bd1b11.png ) @$ F/ Q9 o' s8 h/ p
$ G; o& Q' I( L. C
b057eee90400447bb2307b3b4070a886.png 6 l& g; k( G+ O; v& N. [$ `
6 x# R+ d3 ^/ P  k4 A* F* i1 Q
三、测试代码
6 q7 P/ M) m3 t; U9.下载运行
. t6 B0 z2 G# s4 A2 [+ f- d: F/ O6 \" ^1 K+ V
01a415b61e85414da7a87d95c236f602.png % V: _  Q7 u" |- _1 {: @$ I

/ Z( U# i! y6 e2 V& j4 |' T, O10.实验结果
: Y* c( K' ^, Y7 _$ o' e(1)LED_TEST函数的结果2 ]2 O1 {4 I0 K2 _! O+ }! k
8 Y7 a: i0 H. K) W* k3 k: r8 j
719df45204834f6eb36c49ec843e7c88.png
3 S# R/ A5 E9 s' z1 v5 \5 Y
8 ~8 V- H" }# _. g# f3 I0 }6 O (2)LED_Disp函数的结果! y% X' g, ^7 o4 |% v
首先解释一下这个函数的作用就是可以控制LD灯一个或几个同时亮,比如我传入的参数是0x44,转换为二进制即为0100 0100,1对应的灯就可以亮起来。
; ~" ]! P  A( ^+ r( n: v! e
+ T) t0 e; c  o$ N
5c0710f578674ac6a1a9729996e0436e.png / q( H8 E5 _, y8 K  T7 `
5 r# q9 K/ P6 `) z3 i2 Q, g
四、函数学习
3 i  r. }9 g, H+ s想要学习哪个函数就直接右击去看函数定义即可。. W5 f+ h8 I" B1 |9 @7 ^' P4 a
  S- y6 r" ~; K& B, y2 H
dfe167843f55437cb483890951560d0c.png " J8 W7 I( V( I

! ]9 Y0 K- ~. C# }: r

) m& K5 W/ ]9 q9 G/ E, j(1) void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)------翻转电平
8 z0 m1 b' g/ T2 f' c- M4 g5 K3 i
$ l$ ~  R/ R, K7 D# r& F: N/ _参数解释:9 T$ @4 L9 i9 G6 L7 ?
GPIO_TypeDef *GPIOx:x从A-G
2 ~0 }! |) c% t" d5 |2 J; l! Z% |5 \ GPIO_Pin:可选项如下
* i; T. v0 O9 P; E& l4 E% ]/ j, ]$ k) S$ G/ {
e2f6d4e92c8141b3bd0559560d74d7cd.png , S  |; D5 n6 k
2 V6 s9 [5 @/ D1 i
例如:例:HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);翻转一次PC8的电平, K8 p$ p: x' a  Q! T  _  S$ `: F

; b+ ?& D5 j: M. k/ ? (2)void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)----写入
5 c3 M, ~7 p1 N1 w1 N
- |" |# q0 x9 S& e4 h1 V" z参数解释:前两个参数解释同上0 I. V3 y7 a9 S, U5 p: Y
, D" Z% w9 g  R; I
第三个参数:GPIO_PinState PinState取值如下:
) t# ?* r& a# O0 Z  W1 j- V0 ^4 T8 P0 L2 X, T# p5 E
GPIO_PIN_RESET   低电平3 n1 I7 S4 R+ S" F, ], S/ Z

9 e5 R" }; @4 ?& ]GPIO_PIN_SET        高电平- M/ Z. u1 M! P( g
- @7 ?' }4 E' c
: \3 |- \0 N& q: l
五、问题总结$ o+ [# e3 C/ w' H
在用CubMax生成框架配置GPIO初始时为什么要把每个引脚设置成高电平呢?
$ _  q4 B$ O! K* R; I) M9 z0 ^# S8 i" P" m0 r8 s0 |
解释:
2 a+ h, e- \' i5 O( l' q1 {: z4 F( T- b1 j
首先看一下LED灯的原理:' v, }+ c1 x. {) p
; Z1 d* z7 `2 L, h9 N8 |1 Z
a4a131a9fd4e4ab2b257e91484a20fd8.png   O& Y0 K  `9 _8 v/ |5 y: ]/ \

$ D0 E5 J) k* a- L( o  d; d' d8 nLED:当阳极电平>阴极电平时,LED导通发光
& c3 i9 a9 y( s1 M当PC8为高电平时灯才会亮,
0 I- G9 k% I. e, A5 C, o当PC8为低电平时灯就不会亮
: w* |6 C+ d& H1 `% W) z& J  _5 c) l1 {
1910998b44f94b09a801c213fc1c14c9.png + q' k- x& L' @# F' I
. t9 @& _2 K6 U9 B
当PC8-PC15为低电平时,灯才会亮,因为初始时希望LD灯不亮,灯的亮灭有个573锁存器在控制+ L% C$ I. X& K/ N9 L+ |& z( W
5 M$ A% q  N1 e! P! u" H4 y& T
68f707bb91d44e178538ade9d7484210.png 8 U+ Z6 y. l4 n5 Q# t# N

- l  ~5 s9 n/ _. t$ M/ J
97739f9315ea4faf895eff2305fb26de.png ' T; ]8 `; d( r  p' v' T# `

- K( F* F1 }6 Z! u  N因此初始的时候把PC8-PC15都置成高电平,灯才是熄灭的状态
& \& [6 }* q/ }5 w2 q————————————————' G, G9 N! `; ^4 V3 z$ S3 L; V- s
版权声明:想要优秀点儿
5 W  M# j) \. I5 d
' l9 n& k( F# M% u- M
收藏 评论0 发布时间:2023-3-3 15:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版