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

STM32G431RBT6--LED模块入门

[复制链接]
STMCU小助手 发布时间:2023-3-3 15:00
一、利用STM32CUBEMX生成工程框架- e8 W# q3 y! u" v3 L3 O
1.选择MCU
. P7 ^. l5 ^' V: i$ N( G: T
+ P+ i4 `* z+ f9 @. M( q
e4a30991c3254615b2ef60c228eeab4c.png * P1 R8 {# [% O* `5 m0 ]
! S2 V( \5 G( m# ^0 P
9b88653a54144840b1c4fa4781e94a0a.png . @& E  s* w; v& v5 L6 U% [! {  r
8 y+ H* H. Y* @. W7 j: P

1 O  \- B: G: E 2.配置时钟
' J; f0 r8 U/ H( Z5 V( W9 n% ?) j4 Z& M: Y
f1d5505a8aa549b0a76ce04d494c5319.png ) U) x: b7 K) ]2 E* t
* h' H- d* U  N8 k) R
3.配置GPIO
2 s  W. @/ e, T! q2 ^1 i  l- S/ g8 ]
7542e23a70e54883ae1bfe680ed02e42.png
$ }+ D: y! W  N  L4 @# {
6 Z) T( a: `! r* {# K1 a) B3 U$ Z
4. 配置Project Manager( x1 M- x# A* u" |2 X& g' G% R
  g- ^+ w" P2 m: M& s  z+ t7 z
dac2975316764ec0b34eb0d3e719ccda.png / f/ a) u7 O4 K# D$ }/ W5 |

/ h7 W  q' V  N7 Q4 a2 K
a46e2460aa9e4f8dbe354b33c83b1589.png 1 W. M) G: `+ Q: B  K8 n; m
$ m; C8 i& _/ C- K% o

  O; O4 E/ V5 i二、利用STM32CUBEMX生成初始化代码文件
" e6 u# S$ G0 p: F+ _- F 5.打开工程文件8 }) z* Z5 N2 r& |- Y
0 [3 s( m$ w6 U  ^! B, y. w7 J
48f076bc9f4b427fb6d2f9acae554c13.png
5 q: E; d4 u( O* C+ j3 \9 x# i! ?' V# v. J, o. _) W
c207bb60e08d472387c7297d7843a3b9.png 4 t5 t/ s5 G* g  ?' G% \

$ j# T) ^8 C% R! L9 l+ e5 ]
6.编译Keil代码--生成的框架是否有错误
6 {3 Q6 G% U4 E3 ~( p- A4 o$ b! O) c; h1 j" l. m2 d
802e07e1fa1f4f648875769c3cb64294.png
* ]. U1 J4 _" I) E( S+ G0 F5 s0 f0 s) O! {% i" s6 q
7.按模块添加代码
& Y  B, q: c# Y7 N+ W$ b' B* ]2 _9 Y' p6 u* I+ j8 R
在gpio.c中添加代码
! t" y! }/ D9 _! x7 [/ u
* o( h- z7 ~! Q- A4 O& R7 g
7c3c204564094cce91862ac3e8c67f5f.jpg : m* v& {! ]4 H3 h; ^) e5 c: r; p
, j3 ~4 H6 q4 k) ?5 |% q
在gpio.h中声明函数
$ R0 y  N% F. V1 K6 F' B) M8 j& r
9 b% h5 U/ L. |/ [* j' I; f# y
ddbecff5184847d5af4769d3a20c6efa.jpg
9 u( l8 r7 W9 m4 A4 A" C* x6 T$ N3 v" p; @
在main.c中调用函数
0 a& |9 r0 R% M' W8 b( i( f
3 ^8 z9 M1 i* I
1f11ed23e02748a88a8e65886be644cb.jpg
- v. d3 C* E- W, j) r
8 D+ }* i4 H. p7 o8 |- i8.配置Options
* L: a  m7 a& J  h- t( t
, h; f1 M& t9 k2 b
bc83f022618748e79772ef11b02b8bca.png
' `  `8 E7 ^7 C; k# f' r
% j0 J* [0 E1 E0 C4 Z# W
ef19445adb3b4aab9efde3e1c7bd1b11.png
" E5 G( j% G, [; |& B  x9 n  s, [3 V
' t; P! h  r: b
b057eee90400447bb2307b3b4070a886.png 3 ^! a/ g! f+ A! u: |- M  B5 v1 g% D
$ G. q" F; \2 f6 r
三、测试代码0 ^. x$ G4 H, b
9.下载运行. K9 u( ~- }# C

2 _% U( I, g8 l; \6 H# g
01a415b61e85414da7a87d95c236f602.png
- t9 P$ k' F; g- ?7 d  r; |6 `2 |3 m6 ^: Z+ [
10.实验结果- a# h. {9 z( E  C) ?
(1)LED_TEST函数的结果* V7 J+ @/ T7 S5 p
0 E" e5 x& o* w$ ~, p
719df45204834f6eb36c49ec843e7c88.png * w: F* n, u3 M) g+ V  g) I

! @+ G: v% @4 S& X1 b: J (2)LED_Disp函数的结果
% L: ]  h" j; M4 M5 A6 V% L$ ?首先解释一下这个函数的作用就是可以控制LD灯一个或几个同时亮,比如我传入的参数是0x44,转换为二进制即为0100 0100,1对应的灯就可以亮起来。 - _9 k) a" u8 y7 T/ U. r

# x+ D9 [3 M& X& o8 }. [
5c0710f578674ac6a1a9729996e0436e.png 5 I0 P" I7 L! ~

+ [5 f" F# g: \( a 四、函数学习
2 U6 X% X+ ?/ G- p% ]) ~4 D% U想要学习哪个函数就直接右击去看函数定义即可。7 f% V- x6 B- t5 ]* E$ f3 B) c

6 ~' i  j( J, j/ R9 c% R5 I. @3 i
dfe167843f55437cb483890951560d0c.png * M  X# |0 N! o% B( ]( e9 I; u
$ s; b7 {  E2 k  W
1 N- _  h, R$ |3 I
(1) void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)------翻转电平
, d1 }3 _+ x3 }" ~  S0 s2 C' i0 N9 K7 T; F7 C
参数解释:: M: O* k6 F' Z; n, m/ V
GPIO_TypeDef *GPIOx:x从A-G
3 u( E* g" a9 D  |% c+ J GPIO_Pin:可选项如下
' a$ H7 ^5 \) G. x' ~; {0 n% r* A; I2 F! h5 Y
e2f6d4e92c8141b3bd0559560d74d7cd.png 0 r4 g$ D; {/ a/ Z8 m& b: [
* q: W! Y  u7 U/ i* C# X. S. i
例如:例:HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8);翻转一次PC8的电平$ `5 c% ^' u7 d# C
2 l2 d0 Q7 p$ c2 j
(2)void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)----写入. B  P: Z- l" g- L5 N. I

2 a! i3 z5 R( \, i- k! f* U* E0 Q. J参数解释:前两个参数解释同上
9 D% t* k% L9 ^3 w" k* B0 y* s3 _8 L% [  a" Z6 [( h* k& R' K
第三个参数:GPIO_PinState PinState取值如下:! }+ D! N; y  Y: r8 ^+ b  o

  E5 `9 U( i0 W: j  Z3 ^3 qGPIO_PIN_RESET   低电平
8 }- c/ e1 }0 Y% l2 l
: I# [3 B. v7 V3 JGPIO_PIN_SET        高电平4 ]) C$ h1 m- n$ k
& D/ v1 A5 F) O+ Q$ H5 d; V& J; L

( i/ j/ Z) b9 ?& m6 P9 F五、问题总结- W& H( w/ e( m0 r# p
在用CubMax生成框架配置GPIO初始时为什么要把每个引脚设置成高电平呢?
4 J. g5 _) j% I4 C4 z
) K* V$ n, ~5 p9 [
解释:
' O1 f8 J3 Y# G2 L4 B5 t9 _9 t& Q6 M/ f- L* [2 L( _6 V0 }6 x
首先看一下LED灯的原理:% v% p: c: y" l  p% [
1 t8 u" x! f! i1 [
a4a131a9fd4e4ab2b257e91484a20fd8.png
; N6 e8 ?2 b/ k) |% \$ _, R2 h/ D7 P' l! {1 }- R
LED:当阳极电平>阴极电平时,LED导通发光
/ V# c# y. ?7 ~( M当PC8为高电平时灯才会亮," V" b0 H. J$ m
当PC8为低电平时灯就不会亮
+ Q" l+ M' c5 A; s9 U) {7 b, M' S: o
9 l4 j$ u6 k  P: _- B
1910998b44f94b09a801c213fc1c14c9.png $ P/ L" R4 k) r& @
, P6 [" o% t% ^. ~
当PC8-PC15为低电平时,灯才会亮,因为初始时希望LD灯不亮,灯的亮灭有个573锁存器在控制$ ]7 }+ S9 Z$ r/ o- l

9 r% U% @, `2 ]9 n5 w" W+ G
68f707bb91d44e178538ade9d7484210.png . d! W1 O) O1 Q( y" k' [

) Q# Y% V4 A3 T4 L# a: ^
97739f9315ea4faf895eff2305fb26de.png % l. o: O, g' O9 l# a

% s) S$ x$ w/ n; A8 V' S- {+ A& o$ x因此初始的时候把PC8-PC15都置成高电平,灯才是熄灭的状态% Q3 C; U1 m: L4 b; U
————————————————6 _# Y' W6 r+ ?( J" k# }
版权声明:想要优秀点儿1 K1 \  u( _/ t/ G( f9 k, {+ B! Y' L
* M" G0 d( y$ E/ D$ r# q
收藏 评论0 发布时间:2023-3-3 15:00

举报

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