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

STM32G030C8T6按键扫描与LED程序V0.3(五)

[复制链接]
STMCU小助手 发布时间:2022-10-12 17:00
本实例基于RIBEE_02开发板设计,5个按键分别是PB5、PC13、PA0、PA2、PB0,其余25个LED进行点亮动作,实现按键输入与LED输出逻辑功能。: z3 A0 n/ x9 N* K6 l8 P
6 |: o( n$ C/ ]( i8 `) j$ Y' Q6 Z
1.上芯片图与电路图" z; B- Z2 N  g* M; {, m. ?

/ f' A' M" J5 e 6afdda4d56724d67b80d565fc11143f4.png
1 F6 `6 b  G  E* Y9 Q8 p0 C0 N# j3 v( m$ r3 x. e
50128c9f60fa4f12aa9fcb0dfd7a9021.png 1 f& M4 Z1 t  ^* I/ w% C2 G
) e9 K- c0 u7 c( K
b45176bb8bd949649ece626b12dd4b4f.png
; K4 s- J% b  _  w
5 U- m6 D9 B7 X2 q. U 2.配置晶振,启用内部晶振,失能外部晶振。设置晶振倍频与分频,外设基础时钟配置为64MHZ。
( B5 {4 e. f, Z: U6 W- F
, S  g8 D: k8 ~/ N2 t 3.编写LED与按键KEY驱动程序
$ i% d3 ~" O. B& A  D% d/ r) p
- W5 p9 {: |6 @. ^& F# D# B9 `LED.H文件2 j1 M$ c% F- j  N: m8 O% S, y

2 Z! G9 f, F) [' F; u6 B/ A
  1. #ifndef __LED_H
    - p, ]6 p! `5 U) E2 y
  2. #define __LED_H
    5 X4 u5 @/ R6 `
  3. 6 X: q8 k0 o# l9 a/ C( d2 {: C
  4. /* Includes ------------------------------------------------------------------*/$ N1 n; p* |; v' g4 b( }# O8 v
  5. #include "stm32g0xx_hal.h"* G4 w% y: [5 k( K
  6. 4 g/ j% r. V! f+ q
  7. typedef struct& C5 r( L; I6 S, k0 X
  8. {
    6 `: {. {: P2 [; ~" Y9 i
  9.     uint8_t NUM;  ]2 f( h% \* O3 N* ~3 x( A
  10. } HORSE_Struct;
    7 C# h# X4 |% M7 T& b
  11. /*************  共25个灯跑马点亮   *************/
    ( g4 z& z7 _0 p8 b" t) w
  12. typedef enum {
    # m" V0 W5 ?3 g7 I4 M1 r
  13.     BLUE_B1= 1,       //蓝灯
    . K) I: B9 h" U
  14.     GREEN_B2,         //绿灯8 S' A4 K" g2 ~  t1 |, Z
  15.     YELLOW_B10,       //黄灯
    1 S% |; q( J$ l4 j# R
  16.     RED_B11,          //红灯
    : ~$ l0 b: ~3 ^0 ~1 H. H4 m
  17.     WHITE_B12,        //白灯8 a9 _# }4 q# y# t  A3 v, C6 C- l
  18.     BLUE_B13,         //蓝灯
    2 ^4 K" e! }1 J. {; u' H* V
  19.     GREEN_B14,        //绿灯
    ( |6 M/ G# n2 i/ R; P) m+ e3 t/ C
  20.     YELLOW_B15,       //黄灯
    8 |5 m( Y  N  w5 s* |% ?7 p2 i& Q
  21.     RED_A8,           //红灯8 S" a! B5 v- t/ J. j
  22.     WHITE_A9,         //白灯, s8 m; E; L2 Z! |1 F
  23.     BLUE_C6,          //蓝灯
    $ ]% ~& Q& M% C* q$ y7 M
  24.     GREEN_C7,         //绿灯
    - U3 j2 I' @0 H7 Z, ]
  25.     YELLOW_A10,       //黄灯3 v; D% D5 u. {# p  Q
  26.     RED_A11,          //红灯& M; \7 h- A0 }. `- f
  27.     WHITE_A12,        //白灯* J! G' Q5 w6 N! Q
  28.     BLUE_D0,          //蓝灯. S* G* q/ P. |( C4 p  A
  29.     GREEN_D1,         //绿灯5 k2 C# R/ W3 F" K% G7 x; j
  30.     YELLOW_D2,        //黄灯
    3 }6 o8 Z( }, \) z, ~- b7 S
  31.     RED_D3,           //红灯/ u8 t  y. J- `! @+ Z. E9 a
  32.     WHITE_B3,         //白灯
    5 }: R7 v* x' D' i8 @
  33.     BLUE_B4,          //蓝灯5 B! M! D, {7 W4 g+ A  `
  34.     GREEN_B6,         //绿灯
    * U* }, L8 F& i" E" ]( ^, N
  35.     YELLOW_B7,        //黄灯
    - u. S0 W& ]8 h
  36.     RED_B8,           //红灯# ?' B0 N& d& V1 V! {
  37.     WHITE_B9,         //白灯
    # |7 y9 `0 h1 s- J  G+ @
  38. } LEDEnum;; ^- N) g2 Z6 i& c
  39. /* Private defines -----------------------------------------------------------*/
    ! T  |9 b. {1 E! d3 v# I& C
  40. #define PA8_Pin GPIO_PIN_8
    4 c5 s7 T9 X% c7 V
  41. #define PA8_GPIO_Port GPIOA9 k5 @; q2 w5 M. x+ l: z
  42. #define PA8_High()   HAL_GPIO_WritePin(GPIOA, PA8_Pin, GPIO_PIN_SET)
    / y0 I$ ?( {: C- q. q
  43. #define PA8_Low()    HAL_GPIO_WritePin(GPIOA, PA8_Pin, GPIO_PIN_RESET)
    " }8 ]* e. J5 {/ C, ?

  44. ; j# R. z+ L* c" ]! D( E3 E
  45. #define PA9_Pin GPIO_PIN_9
    # }4 U' y' t& ?. {3 P$ y
  46. #define PA9_GPIO_Port GPIOA
    , y% H8 x; y! O5 w  A
  47. #define PA9_High()   HAL_GPIO_WritePin(GPIOA, PA9_Pin, GPIO_PIN_SET)
    ! C! j: L! v9 U/ J: T- n
  48. #define PA9_Low()    HAL_GPIO_WritePin(GPIOA, PA9_Pin, GPIO_PIN_RESET)# O! F: p# }4 ^& P. ?
  49. ! k( k) A2 q& V# ?5 Y4 T; F8 L
  50. #define PA10_Pin GPIO_PIN_10, @: A( {+ p& Y" _# }
  51. #define PA10_GPIO_Port GPIOA
    & X4 b6 H0 r4 S! d+ k  I
  52. #define PA10_High()   HAL_GPIO_WritePin(GPIOA, PA10_Pin, GPIO_PIN_SET)
    8 K$ d+ N. ?, T. n. _
  53. #define PA10_Low()    HAL_GPIO_WritePin(GPIOA, PA10_Pin, GPIO_PIN_RESET)! B* P/ X$ d. |% @# R% {

  54. 4 S& L3 N- x" s/ l7 T
  55. #define PA11_Pin GPIO_PIN_11
      D! j8 p% P5 K4 r4 J
  56. #define PA11_GPIO_Port GPIOA
    / `- C' L% x1 [/ w, p. @. d% ?
  57. #define PA11_High()   HAL_GPIO_WritePin(GPIOA, PA11_Pin, GPIO_PIN_SET)
    & p7 A- m  K4 W. i3 a5 a
  58. #define PA11_Low()    HAL_GPIO_WritePin(GPIOA, PA11_Pin, GPIO_PIN_RESET)4 d' G2 O6 g5 u, p/ U2 n
  59. 3 W# R- v- q' F, @! j0 b* y7 W
  60. #define PA12_Pin GPIO_PIN_12. f. H2 O6 |. X9 D' \/ L
  61. #define PA12_GPIO_Port GPIOA
    : V* \" J. X; _* w
  62. #define PA12_High()   HAL_GPIO_WritePin(GPIOA, PA12_Pin, GPIO_PIN_SET); i+ E6 ^' N4 b# ^" j1 [3 ?" X
  63. #define PA12_Low()    HAL_GPIO_WritePin(GPIOA, PA12_Pin, GPIO_PIN_RESET)
    5 f" ^  o# O0 h* f/ J3 e- @% T+ O0 o
  64. ; L9 Z  x) b% H1 C* o
  65. #define PA13_Pin GPIO_PIN_139 O+ }5 o  C  Y% J
  66. #define PA13_GPIO_Port GPIOA- l! D' _$ U9 p5 \5 g- B
  67. #define PA13_High()   HAL_GPIO_WritePin(GPIOA, PA13_Pin, GPIO_PIN_SET)
    1 G7 q% F, _. ?
  68. #define PA13_Low()    HAL_GPIO_WritePin(GPIOA, PA13_Pin, GPIO_PIN_RESET)! V0 R- B- S* X; Q5 u
  69. : E& N9 {: C7 S* O! l& R' s0 r
  70. #define PA14_Pin GPIO_PIN_14
    - [: I+ `4 u+ l
  71. #define PA14_GPIO_Port GPIOA: d/ O+ K6 F& T0 T9 V* w
  72. #define PA14_High()   HAL_GPIO_WritePin(GPIOA, PA14_Pin, GPIO_PIN_SET)4 `1 m3 K/ v: p8 [, G* K6 _
  73. #define PA14_Low()    HAL_GPIO_WritePin(GPIOA, PA14_Pin, GPIO_PIN_RESET)
    ) V  a& G- `* q* V: C% ]

  74. # |- ?2 t3 ?# p
  75. #define PB1_Pin GPIO_PIN_1* B, Q( T1 i* V" F' n% [' T) y* c
  76. #define PB1_GPIO_Port GPIOB" g* c- o( {3 c4 d
  77. #define PB1_High()   HAL_GPIO_WritePin(GPIOB, PB1_Pin, GPIO_PIN_SET)* u! i1 |+ O2 H; Q
  78. #define PB1_Low()    HAL_GPIO_WritePin(GPIOB, PB1_Pin, GPIO_PIN_RESET)0 [5 {& J$ e; `# v4 C1 \7 c

  79. " E1 q3 b/ C7 Y
  80. #define PB2_Pin GPIO_PIN_2
    5 L- d! T  o( I# m' }
  81. #define PB2_GPIO_Port GPIOB
    5 Q* |: D1 E( |  b& H
  82. #define PB2_High()   HAL_GPIO_WritePin(GPIOB, PB2_Pin, GPIO_PIN_SET)7 O$ U6 q1 G6 e3 u! o* M
  83. #define PB2_Low()    HAL_GPIO_WritePin(GPIOB, PB2_Pin, GPIO_PIN_RESET)1 x7 n+ e+ @7 }
  84. 4 C9 }/ ^  a+ [: i" U8 ~' J
  85. #define PB3_Pin GPIO_PIN_37 Z$ r# _/ g4 a7 n3 K1 x' O( N
  86. #define PB3_GPIO_Port GPIOB# i, ~6 c1 w) x
  87. #define PB3_High()   HAL_GPIO_WritePin(GPIOB, PB3_Pin, GPIO_PIN_SET)
    4 K8 Z& [* k9 @
  88. #define PB3_Low()    HAL_GPIO_WritePin(GPIOB, PB3_Pin, GPIO_PIN_RESET)
    3 }4 m) E1 H: P6 s2 u
  89. 9 v0 @; C: p& P
  90. #define PB4_Pin GPIO_PIN_43 q9 A2 b8 _; K; [) k
  91. #define PB4_GPIO_Port GPIOB
    5 B. }$ g4 Q4 T! A0 s
  92. #define PB4_High()   HAL_GPIO_WritePin(GPIOB, PB4_Pin, GPIO_PIN_SET)( B- ~) y# E) C: Z! {" {: O+ N
  93. #define PB4_Low()    HAL_GPIO_WritePin(GPIOB, PB4_Pin, GPIO_PIN_RESET)2 U  U8 V- y0 o; a- J+ k% X

  94. 5 c/ X5 B5 V! W8 I, [' W* x1 y) e5 i
  95. #define PB6_Pin GPIO_PIN_6* D" @4 f# S3 Z1 C6 B  n) D: B
  96. #define PB6_GPIO_Port GPIOB9 v: l3 r1 f6 x% [" x
  97. #define PB6_High()   HAL_GPIO_WritePin(GPIOB, PB6_Pin, GPIO_PIN_SET)# B+ w1 }# N; `% `8 Q  G) Y
  98. #define PB6_Low()    HAL_GPIO_WritePin(GPIOB, PB6_Pin, GPIO_PIN_RESET)6 ^1 n- W, I/ Y+ X6 m+ T; [  F

  99. ! G3 M& A- m, `
  100. #define PB7_Pin GPIO_PIN_7  m8 N' J$ T$ a. G+ n% b! K) ]
  101. #define PB7_GPIO_Port GPIOB1 ~% i8 o6 m$ g8 E& W3 I# R  q
  102. #define PB7_High()   HAL_GPIO_WritePin(GPIOB, PB7_Pin, GPIO_PIN_SET), o" A7 [5 t0 I; O' a) u
  103. #define PB7_Low()    HAL_GPIO_WritePin(GPIOB, PB7_Pin, GPIO_PIN_RESET)
    9 T4 Z6 p; H+ |$ E
  104. % K# _& X9 j$ _. q; \
  105. #define PB8_Pin GPIO_PIN_8  p- C1 z* l  L' s6 Y' C
  106. #define PB8_GPIO_Port GPIOB0 Z  p! Y$ B& X
  107. #define PB8_High()   HAL_GPIO_WritePin(GPIOB, PB8_Pin, GPIO_PIN_SET)
    2 K6 C) J5 c, C2 m
  108. #define PB8_Low()    HAL_GPIO_WritePin(GPIOB, PB8_Pin, GPIO_PIN_RESET)4 E) f) W/ C2 P8 ]$ _+ f3 _
  109. ) q2 c  d% ?6 z
  110. #define PB9_Pin GPIO_PIN_9% ?+ {1 E+ |! d
  111. #define PB9_GPIO_Port GPIOB
    5 l6 `: X$ [( v7 b) \8 ]9 g
  112. #define PB9_High()   HAL_GPIO_WritePin(GPIOB, PB9_Pin, GPIO_PIN_SET)" S, A5 o  T7 s/ z) ]! i, Q& F
  113. #define PB9_Low()    HAL_GPIO_WritePin(GPIOB, PB9_Pin, GPIO_PIN_RESET)- W$ }+ d2 t& ^  B8 c* T; G  E% q

  114. # y6 s7 X* L" w( `
  115. #define PB10_Pin GPIO_PIN_10
    9 A8 y" _5 I% I
  116. #define PB10_GPIO_Port GPIOB3 D9 n/ M: I0 \) }0 b9 c" _. R0 C' ?
  117. #define PB10_High()   HAL_GPIO_WritePin(GPIOB, PB10_Pin, GPIO_PIN_SET)3 p* Z! _9 b$ U+ f- q
  118. #define PB10_Low()    HAL_GPIO_WritePin(GPIOB, PB10_Pin, GPIO_PIN_RESET)( G7 L! D  L5 F0 y

  119. $ p) Q& Q. d3 T( h9 `1 A/ O; }
  120. #define PB11_Pin GPIO_PIN_11- f/ y! |6 B3 K5 d& [
  121. #define PB11_GPIO_Port GPIOB
    - X% t  B/ [8 |6 l
  122. #define PB11_High()   HAL_GPIO_WritePin(GPIOB, PB11_Pin, GPIO_PIN_SET)
    3 K6 P# a: `( _0 P7 Z
  123. #define PB11_Low()    HAL_GPIO_WritePin(GPIOB, PB11_Pin, GPIO_PIN_RESET)4 _2 D% N8 C; C( j2 z, Z
  124. $ p, F+ W1 p  ~' t6 ^, _4 c+ M" @
  125. #define PB12_Pin GPIO_PIN_12
    ' c2 b1 ]# X- q6 L; G- {, ?
  126. #define PB12_GPIO_Port GPIOB
    ( V0 B3 C/ T( Z4 W* j* B
  127. #define PB12_High()   HAL_GPIO_WritePin(GPIOB, PB12_Pin, GPIO_PIN_SET)+ Z9 W  t2 C, M6 R% \
  128. #define PB12_Low()    HAL_GPIO_WritePin(GPIOB, PB12_Pin, GPIO_PIN_RESET)  N- L4 F8 j4 L7 ~" s8 s; i: s6 U

  129. ) m9 Y8 L9 s! k* ]
  130. #define PB13_Pin GPIO_PIN_13) U. }% F$ X0 ?# z
  131. #define PB13_GPIO_Port GPIOB
    / |2 Z: W; [: N+ f
  132. #define PB13_High()   HAL_GPIO_WritePin(GPIOB, PB13_Pin, GPIO_PIN_SET)
    - I. v! g, N  W9 x
  133. #define PB13_Low()    HAL_GPIO_WritePin(GPIOB, PB13_Pin, GPIO_PIN_RESET)
    9 m, Z* E; Y' |+ w) _1 M: k7 B
  134. 5 k  }1 ~, }7 V0 a
  135. #define PB14_Pin GPIO_PIN_14
    2 J/ {- Y# U* q) X7 G: U
  136. #define PB14_GPIO_Port GPIOB
    . |2 Y8 y! d" k  l0 s
  137. #define PB14_High()   HAL_GPIO_WritePin(GPIOB, PB14_Pin, GPIO_PIN_SET)
    0 x* M& o2 ^2 R$ `7 I
  138. #define PB14_Low()    HAL_GPIO_WritePin(GPIOB, PB14_Pin, GPIO_PIN_RESET)6 d( @* z7 g! C; ~' u) L
  139.   R; I; z3 X/ S& z3 Z
  140. #define PB15_Pin GPIO_PIN_15
    7 y- L5 t) ?, |; h, E
  141. #define PB15_GPIO_Port GPIOB
    / N  Z& c! S1 }7 U* g
  142. #define PB15_High()   HAL_GPIO_WritePin(GPIOB, PB15_Pin, GPIO_PIN_SET), j  _7 @6 g0 W/ M4 d9 {# \9 A% r
  143. #define PB15_Low()    HAL_GPIO_WritePin(GPIOB, PB15_Pin, GPIO_PIN_RESET)6 `5 e8 ^% U. P+ \

  144. / O0 T- A- b. a4 z6 n( v
  145. #define PC6_Pin GPIO_PIN_6
    9 F0 t+ ~4 B  s$ L0 ~# e+ x( v
  146. #define PC6_GPIO_Port GPIOC6 k+ H/ I2 P2 l  J
  147. #define PC6_High()   HAL_GPIO_WritePin(GPIOC, PC6_Pin, GPIO_PIN_SET)+ K# \: f9 Z6 Q' m+ X
  148. #define PC6_Low()    HAL_GPIO_WritePin(GPIOC, PC6_Pin, GPIO_PIN_RESET), j$ |! g3 j& k
  149. , ^* U! k# K+ C$ t( Q1 p; W0 C& @6 S
  150. #define PC7_Pin GPIO_PIN_7+ [: _% q* ~" |& t0 U, a6 b5 v
  151. #define PC7_GPIO_Port GPIOC5 F: a/ Y1 V% P6 w: C0 `3 @
  152. #define PC7_High()   HAL_GPIO_WritePin(GPIOC, PC7_Pin, GPIO_PIN_SET)
    4 k# B. ~* y$ a: E* `7 a$ q
  153. #define PC7_Low()    HAL_GPIO_WritePin(GPIOC, PC7_Pin, GPIO_PIN_RESET)
    : @/ c, O1 E1 j$ |, U6 B4 Y

  154. 7 F0 d' F4 v0 d6 o
  155. #define PD0_Pin GPIO_PIN_0  O9 I! E( x/ K4 M1 c5 W% I$ E
  156. #define PD0_GPIO_Port GPIOD- G' r5 a. u6 _4 f
  157. #define PD0_High()   HAL_GPIO_WritePin(GPIOD, PD0_Pin, GPIO_PIN_SET)
    8 F- y: p: `: i) A7 w. U# E
  158. #define PD0_Low()    HAL_GPIO_WritePin(GPIOD, PD0_Pin, GPIO_PIN_RESET), `" u+ c; |: \8 S' U2 `

  159. 6 d9 L& s: z- [" T1 B- j& f2 [  W
  160. #define PD1_Pin GPIO_PIN_14 }1 [/ t5 C. v) ~7 l
  161. #define PD1_GPIO_Port GPIOD# s. ^3 b+ s% ~" q
  162. #define PD1_High()   HAL_GPIO_WritePin(GPIOD, PD1_Pin, GPIO_PIN_SET)
      s% w+ W: _+ v8 @# M
  163. #define PD1_Low()    HAL_GPIO_WritePin(GPIOD, PD1_Pin, GPIO_PIN_RESET)
    * d+ T7 E9 j  c
  164. 2 I- K# E1 y! y  [+ |3 B& A
  165. #define PD2_Pin GPIO_PIN_2, O0 v/ U+ V) C' D) M# x5 I, ^# C& H
  166. #define PD2_GPIO_Port GPIOD
      l0 K# i0 y6 C3 A; q
  167. #define PD2_High()   HAL_GPIO_WritePin(GPIOD, PD2_Pin, GPIO_PIN_SET)
    ) E: u. \- K) x8 J% @
  168. #define PD2_Low()    HAL_GPIO_WritePin(GPIOD, PD2_Pin, GPIO_PIN_RESET)1 P8 t- o+ X6 S1 C6 f
  169. $ {2 j  [9 p/ h8 ~" {. s7 E
  170. #define PD3_Pin GPIO_PIN_3- h, K4 R$ l! l) J) P1 G, g0 q3 I
  171. #define PD3_GPIO_Port GPIOD$ L- ?# }! q2 Z/ L; @1 K
  172. #define PD3_High()   HAL_GPIO_WritePin(GPIOD, PD3_Pin, GPIO_PIN_SET)2 p1 t2 p1 E; M5 E3 i
  173. #define PD3_Low()    HAL_GPIO_WritePin(GPIOD, PD3_Pin, GPIO_PIN_RESET)! v9 Y( p9 [  \: V6 \  w

  174. # M+ N2 w8 J9 f" U
  175. /* USER CODE BEGIN Private defines */
    % @3 _, ~* {7 S2 A7 x
  176. extern void BEE_GPIO_HORSE(void);
    , ~# f, b5 E) H- w. b
  177. /* USER CODE END Private defines */, W  h1 P: J( M# n; U) y) h; {
  178. 8 |+ p" A3 A4 J! H8 q0 o* g% f

  179. 0 K1 P) S6 y: s1 V
  180. #endif /* __LED_H */
    8 Z+ ]0 P% ^# o5 _8 q
  181. * ?. J3 \  R! p  h1 h/ h) c3 X  H
  182. /****END OF FILE****/
复制代码

& j6 D1 {6 T5 |9 {* a- sLED.C文件
" p  t; |& J# Z: W: r  ]0 d7 D4 [  j: k0 [7 M
  1. #include "BEE_LED.h"& |, H2 j6 [% X, U# t9 [4 j
  2. # l& y" Y; W* X0 L9 a& L
  3. HORSE_Struct HORSE= {0};
    1 A; {1 L0 m" x8 u

  4. & H9 E1 _* P% K( y) y" V. M& K
  5. /* Private function prototypes --------25 LED HORSE RACE---------------------*/
    6 |, [9 u3 P" K/ t# A, a$ f! H
  6. void BEE_GPIO_HORSE(void)
    3 l1 ^, |% x* K2 ]. U
  7. {3 o7 v$ ^4 f: z% H0 _
  8.     HORSE.NUM++;2 o5 u) l  V1 g2 a4 W
  9.     switch(HORSE.NUM)
    " u+ h7 L( Q. f: H
  10.     {
    + Y/ ]: Z% n$ [! ^- Y. g! H9 C
  11.     case BLUE_B1   :- h8 A0 ^$ W/ W
  12.         PB1_High();
    / [% W9 I, e6 M4 ^
  13.         PB2_Low();9 l' Y- D! N7 j0 {. `- m4 n
  14.         PB10_Low();
    , a( n& m  T! O" J4 X* Z) \
  15.         PB11_Low();
    $ l% E1 n/ M; T) G  C2 O/ F
  16.         PB12_Low();# q0 M; M' i6 S. \  e
  17.         PB13_Low();) F" G3 [0 Z4 Y
  18.         PB14_Low();( Q- X  o2 a# l$ C% u
  19.         PB15_Low();
    ( Y5 i% \: z9 F8 e' @8 w
  20.         PA8_Low();
    + ~- Y8 f+ i) ?6 |, J
  21.         PA9_Low();
    / I  ~  o8 n  B( C# G# a
  22.         PC6_Low();
    0 O: l" A  P+ ?% R. z" q8 O  P
  23.         PC7_Low();, D1 N7 h/ S- n: g4 e$ c3 _4 n
  24.         PA10_Low();
    , f4 X& u, P& q1 S
  25.         PA11_Low();! ?2 H. A2 ]3 i( M2 v
  26.         PA12_Low();6 m# s0 v1 [: r8 T! P7 X/ w
  27.         PD0_Low();
    5 {" B9 r, x- G' {& N
  28.         PD1_Low();
    1 H: n5 X* T0 v4 W
  29.         PD2_Low();2 o& r* \  X; t7 J9 Z$ H! g
  30.         PD3_Low();4 c# c/ a4 |4 d2 w. }
  31.         PB3_Low();1 I! q5 i0 v. z6 Y" ?0 b& ^
  32.         PB4_Low();$ Y! }. e+ r( P6 ^( _7 `
  33.         PB6_Low();4 n3 p- W& O- G' A' s, L7 M) f7 s
  34.         PB7_Low();
    ! R$ M. q% g. T0 t
  35.         PB8_Low();
    % U+ E' r" a1 \
  36.         PB9_Low();- Q  p# z; r4 I& O
  37. * @7 m3 R$ t9 A) e, W- W5 w
  38.         break ;, l6 ~) }5 h; f' d/ c
  39.     case GREEN_B2   :
    ; _  b; Y. U+ H; @' P3 v" E
  40.         PB1_Low();
    , E( |/ a5 [4 G
  41.         PB2_High();7 D4 y' ]' O( i( c9 ]
  42.         break ;/ M+ _  Z) \9 A; T1 d
  43.     case YELLOW_B10 :
    2 R; T$ p( d9 v/ o% e7 ^
  44.         PB2_Low();* X, o( y% m) S: C! h
  45.         PB10_High();
    2 Y) A' f5 \! ]/ s
  46.         break ;! L$ t  X  h8 h. {
  47.     case RED_B11    :
    + D7 p3 y' Z6 j2 S
  48.         PB10_Low();
    ; G& d, ?; H) W$ {' g
  49.         PB11_High();
    * \( W  _" m8 C$ E9 Z4 E
  50.         break ;3 Z2 S' q1 s* X  i& x5 }4 J* z
  51.     case WHITE_B12 :
    2 q: u) z* O* r
  52.         PB11_Low();
    - c- L8 k  a9 H0 Y% W
  53.         PB12_High();9 N! L8 `# e6 s  ^$ o; `# m! U
  54.         break ;
    ' T/ p, q. D( q/ I, r& E& F' B
  55.     case BLUE_B13    :% p$ q4 q9 \7 \* o9 p% c
  56.         PB12_Low();
    & M6 G& ~6 g% w; V9 p0 |+ Y, T
  57.         PB13_High();- z& Q2 ?$ J; d8 _  z4 W6 q
  58.         break ;- W9 f, D) G9 T# t6 E$ g3 j/ U# j4 L
  59.     case GREEN_B14 :* I/ j! ?' Q! g8 L
  60.         PB13_Low();
      K: q! J% h# _9 G8 f! h. \
  61.         PB14_High();; A" {1 S0 C) v  A+ g( b2 w1 ]
  62.         break ;
    ! @, G5 m9 f) m% x# X
  63.     case YELLOW_B15 :" J+ d& }' |4 j: f
  64.         PB14_Low();
    ' W! A7 X* X9 |2 b" ^3 q
  65.         PB15_High();' F; |7 m8 t" c: h: w
  66.         break ;
    " L5 D: i8 t4 d
  67.     case RED_A8   :% H3 \* D4 U( h
  68.         PB15_Low();/ w' ~1 N+ y) M9 X
  69.         PA8_High();  Y# H$ s9 `% R& D& p4 ]
  70.         break ;
    # h+ C: ~7 V4 Y+ N
  71.     case WHITE_A9 :
    / F; M7 N% A; U. a
  72.         PA8_Low();% s- G6 X$ P8 y6 p
  73.         PA9_High();! ^4 C) }9 d" z7 i. a' S) p- u% G
  74.         break ;
    ; _7 d  C) L" n+ }9 N& L
  75.     case BLUE_C6    :
      w% R' d# {+ [
  76.         PA9_Low();. |2 j' p4 O1 j& w# b
  77.         PC6_High();
    : F0 o* ^$ `* O+ |9 I% q' C  ~. _
  78.         break ;% a7 b9 U4 `/ [" v& h  H
  79.     case GREEN_C7 :/ f- M; _: D7 c7 n$ U) ]
  80.         PC6_Low();% R- P1 Y3 g% ]! v) x9 F0 B
  81.         PC7_High();% `7 R7 w9 a1 n) ?
  82.         break ;+ u1 e) \: N  s/ {6 i8 z) K
  83.     case YELLOW_A10    :; |. r# I9 E, c
  84.         PC7_Low();
    " V; E( D+ J2 W1 s; t% Q6 j* ^
  85.         PA10_High();! b( \, B$ \% f; R
  86.         break ;( Q% G" }# Q& S
  87.     case RED_A11 :
    0 d3 o# Z. N3 Q5 z
  88.         PA10_Low();, g! E9 f" \& q/ N1 E; x1 V
  89.         PA11_High();6 V0 `# ]# A+ j$ n; u2 z* Y& V/ G
  90.         break ;5 p5 y9 j0 l' |) ?% }2 D* [! R' A# j
  91.     case WHITE_A12 :
    & U$ U% z$ ~# s* k
  92.         PA11_Low();% I& o  D# I! y+ N
  93.         PA12_High();
    6 O* z8 @: P4 G3 r, v' o
  94.         break ;) ~; G( \6 S- X
  95.     case BLUE_D0   :4 r  `/ i- L! T& q. O9 z! h
  96.         PA12_Low();
    9 V- D! M  e' B5 m
  97.         PD0_High();
    8 q# _1 U/ D1 o* h; V/ Z, \- r
  98.         break ;
    2 n7 f" D0 i3 \5 d
  99.     case GREEN_D1 :& a' i; @7 M( N. o2 \( @
  100.         PD0_Low();- m, t4 I9 C$ |: c
  101.         PD1_High();$ B# o1 C) q* g2 ^
  102.         break ;
    / P' o, K3 o+ A. v8 ~8 z) v3 |
  103.     case YELLOW_D2    :
    # y0 `2 G: J: G: P
  104.         PD1_Low();
    , u4 [( ~4 ~' r' Q: ]2 k5 G5 i8 y4 l
  105.         PD2_High();
    ; O+ O, G6 ]! w1 ^$ ~0 {" F) u
  106.         break ;
    . p0 ?. v1 S8 e. |
  107.     case RED_D3 :% y2 K# {) x7 Y! J4 y2 v# o
  108.         PD2_Low();
    8 L9 }: x* I3 k, Z
  109.         PD3_High();0 d* a& @8 E% u) X* n
  110.         break ;
    + \; }! l. ]7 K0 o  e! E5 B( ?
  111.     case WHITE_B3    :! z' f3 q* Z, f5 _, X
  112.         PD3_Low();4 R2 _0 j+ t" L( y8 R4 I& H. \  p
  113.         PB3_High();
    # ~! X/ H+ K: h% z+ G$ U0 e, j
  114.         break ;
    8 u/ @) _. |9 z+ V: z
  115.     case BLUE_B4:# P; S' _1 n0 u6 B" C8 S6 K. G
  116.         PB3_Low();
    : f- S" V; z3 j9 ?
  117.         PB4_High();
    - z* q& c3 D8 ]) S3 |
  118.         break ;7 d7 p4 F1 {+ I( E: t! z/ a& w
  119.     case GREEN_B6:8 y8 C. s, w' G. `- ^
  120.         PB4_Low();1 Q. E+ F( y  x9 Q
  121.         PB6_High();& x/ R* i/ Q# r7 I9 l! k0 Q
  122.         break ;/ A  ]/ I* l0 D; u2 h( y: W
  123.     case YELLOW_B7:
    9 g( X7 o  c* `# o
  124.         PB6_Low();
    4 G1 n6 c3 m0 ?
  125.         PB7_High();
    . o/ i4 @/ B! }) A7 v9 |  q7 D. p
  126.         break ;4 j8 U5 f" M9 N% n* `# Z9 R( O
  127.     case RED_B8:  u2 L9 `( b- Y7 `& z
  128.         PB7_Low();
    0 H2 `2 w1 i" _& K$ i5 n
  129.         PB8_High();
    # Q. n  B) u+ n1 _; x
  130.         break ;7 w0 @/ i) y- W1 k/ [1 Y
  131.     case WHITE_B9:9 ?; n8 M1 z! G5 P
  132.         PB8_Low();  D- e, L) b. }8 {4 |
  133.         PB9_High();, f9 l2 q; C# {, J) o
  134.         HORSE.NUM  =         0 ;
    # P( k& u" s6 j- c3 h8 ]
  135.         break ;
    / U. \; G  [4 Z8 W5 ?8 c

  136. % k+ G' ?5 k+ O' c: v* Z. r/ X
  137.     default :0 k' A+ b' u4 W( V9 {# u5 w7 K
  138.         HORSE.NUM  =         0 ;. p  q, t/ l* f- `, [
  139.         break ;//没有符合的条件即执行本default  非必须
    , ^& F; q- \; T% p
  140.     }& b6 m4 O3 o1 n0 y. O
  141. }
复制代码

  I! C6 M* S& }( ?KEY.H文件# k5 M* s/ r% N2 V2 x8 G' b

; B' B2 V6 F, c5 Y1 t7 n8 ]
  1. #ifndef __KEY_H+ {. J$ [5 s% @& F
  2. #define __KEY_H
    - }# Q8 b1 B9 Y

  3. ' [6 O# B/ m1 u: a
  4. /* Includes ------------------------------------------------------------------*/0 N% J  T$ z& g/ ~% L1 k7 ?% ]
  5. #include "stm32g0xx_hal.h"
      h( Q! R7 p( a1 P+ Z9 Z

  6. # w' H4 e1 r; a1 i; O
  7. typedef struct
    4 T4 u2 w1 G! F! \6 K
  8. {
    0 }) z* h. k! J$ {5 }. [
  9.     uint8_t NUM;
    * w0 E! E) B% Z# k
  10. } KEY_Struct;
    ( k' r* r! }' I+ [$ E' G( L$ ~
  11. /*************  共5个按键   *************/) t3 I+ s! G% J( l. R* z  y
  12. typedef enum {
    2 v* U) l7 y: e) R# i
  13.     KEY_B5= 1,    //按键B5
    " @9 S. x+ a; z: o: e
  14.     KEY_C13,      //按键C137 a; K' {! {* W1 Y( f
  15.     KEY_A0,       //按键A0! n9 e! U+ C6 @# `2 @9 B& Z
  16.     KEY_A2,       //按键A2
      u$ C2 `& G3 R  C, U7 z: X. p
  17.     KEY_B0,       //按键B0
    0 O- d6 e4 f! G7 ^/ E3 m% s
  18. } KEYEnum;9 u/ Z% x; ^) X3 T- {7 S
  19. /* Private defines ---------------INPUT AND READ PIN---------------------------*/
    / O/ X1 Y0 P( E% i, M
  20. #define PB5_Pin GPIO_PIN_5
    ! M8 p$ f: _$ R/ c- p8 s
  21. #define PB5_GPIO_Port GPIOB
    1 G$ n9 ~4 e& B) ]; e& E) Q
  22. #define PB5_Read()   HAL_GPIO_ReadPin(GPIOB, PB5_Pin)# m+ |9 T7 O& o6 g: k1 {
  23. 5 F5 a2 V- ~6 d* H
  24. #define PC13_Pin GPIO_PIN_13
    1 y* Y$ |/ Y! G8 J: D" t
  25. #define PC13_GPIO_Port GPIOC
    5 q6 O3 Q. P/ P8 v* V
  26. #define PC13_Read()   HAL_GPIO_ReadPin(GPIOC, PC13_Pin)' Q& n/ y. d6 \( S

  27. 6 O6 l3 r! L2 Y2 X6 k1 ]) }
  28. #define PA0_Pin GPIO_PIN_0
    1 C# c5 w+ i2 s3 W) Z
  29. #define PA0_GPIO_Port GPIOA1 f% R: L7 r( n8 p) C, `5 `
  30. #define PA0_Read()   HAL_GPIO_ReadPin(GPIOA, PA0_Pin)2 ]% _6 m1 |+ S: Q5 v3 g

  31. 3 Q3 b# B2 u4 t# l) ?1 ^
  32. #define PA2_Pin GPIO_PIN_2# R8 K' N# r0 R/ O- v* [6 U# T
  33. #define PA2_GPIO_Port GPIOA
    , f: K* M5 w8 \+ _! M5 [& o
  34. #define PA2_Read()   HAL_GPIO_ReadPin(GPIOA, PA2_Pin)+ S" V* }% o/ R7 p5 z; \. x- F
  35. & ~; S, o0 h" a2 }
  36. #define PB0_Pin GPIO_PIN_0" L( Y& d2 U9 Z' |; H4 R! ~
  37. #define PB0_GPIO_Port GPIOB
    7 _8 z7 C; u8 q9 @3 o. }* @9 N0 M
  38. #define PB0_Read()   HAL_GPIO_ReadPin(GPIOB, PB0_Pin)
    + q2 M' U6 ]% C# p, ?
  39. . l9 Q& d+ F' b# H( W

  40. ) q' _! i1 j# I0 Z! p

  41. $ r# a, Z5 x! J9 y; F% L( a
  42. /* USER CODE BEGIN Private defines */+ _2 w5 C! h9 }3 a0 }
  43. extern void BEE_KEY_READ(void);' w: Y( I. ?" T& ], t% l+ d
  44. extern void BEE_KEY_LED(void);
    2 s4 t- \3 J! w: V2 \/ d" {9 I
  45. /* USER CODE END Private defines */
    7 N4 R6 Y$ e; \+ Q
  46. ) q$ x9 d6 m7 M2 J2 l* j4 @5 @
  47. ! I! K% W) g+ C- Z0 M+ G( G2 p' D- h
  48. #endif /* __KEY_H */
复制代码

3 M; g; r9 Q4 ?+ \7 JKEY.C文件) Y/ u, X* b7 w6 Y8 N# Z* R% m3 _
& q$ G; F3 i3 y. f
  1. #include "BEE_KEY.h"- `9 D; O: k6 g1 g+ I2 u
  2. #include "BEE_LED.h"
    $ {: {/ l" K: u' M9 Z
  3. + p5 e/ e  \+ n2 R, ~5 o$ m
  4. KEY_Struct KEY = {0};
      H7 c+ U* _' g7 D7 c6 q
  5. + y  _% i- T1 Z& k. C- _' y
  6. /* Private function prototypes --------5 KEY AND LED ---------------------*/
    1 V% Z6 h: S' }
  7. void BEE_KEY_READ(void)2 t- s8 [4 J9 X! |: h& A
  8. {7 V1 i( W8 ^! H! H+ Y# Y' R
  9. if (PB5_Read()==0)
    6 d& M# f- ^, p: q
  10.     KEY.NUM=KEY_B5;
    7 ~3 s% D5 C' M9 V2 r. \
  11. //else
    . ~1 T  J" I" T  m0 S
  12.    // KEY.NUM=0;
    ! K8 U. p" }) N2 n) u
  13. if (PC13_Read()==0) ' ]. L7 Q* Z  c
  14.     KEY.NUM=KEY_C13;; O, F- m. Y3 \$ F3 v
  15. //else
    " e2 _0 `  j- U: s6 ^7 y
  16.    // KEY.NUM=0;* q% H6 P/ ?8 x  w9 ~% d$ u
  17. if (PA0_Read()==0)
    4 q% }! z' v7 ]" C3 \: J
  18.     KEY.NUM=KEY_A0;
    . ^# K: k" x, G2 N! L. T& P6 z
  19. // else
    4 G5 f" Y3 Z* T& z1 x) n
  20. //   KEY.NUM=0;+ F1 e4 E" m; k7 t$ g
  21. if (PA2_Read()==0)
    ' T/ _  m9 S- }3 O0 H
  22.     KEY.NUM=KEY_A2;
    3 V8 F+ Q" j) d; D" w+ Z: i6 f
  23. //else  w. X" ]  _, y3 u2 a* A
  24.    // KEY.NUM=0;
    ' m. E% X5 o7 b# n/ d
  25. if (PB0_Read()==0) 2 I: }$ C3 Q) X) J* M! Y
  26.     KEY.NUM=KEY_B0;
    3 l. q4 Y( P6 L7 @/ h7 B' Q9 i
  27. //else4 A- T( S, G5 o" \( p
  28.   //  KEY.NUM=0;& O" r; C6 f% x- v. D
  29. }' c& ]* ]; Q) A! b6 s

  30. & W& j! U/ S9 j* R" _  k/ _
  31. void BEE_KEY_LED(void)
    . p# q  V- u! o, p
  32. {' h. e" N6 s5 D' R5 ^1 |  G
  33. ( w9 `, y- k$ [1 ]  r* Q" ]
  34.     switch(KEY.NUM)
    7 U0 `9 R- t6 `
  35.     {
    ; R3 b$ U. n6 i3 x( w* x/ [' c* \1 ~
  36.     case KEY_B5:
    , m+ w# v& E. O
  37.         PB4_High();0 y2 L' }2 T8 A/ ~3 s
  38.         PB6_Low();
    9 `6 }5 C0 n8 m% z: `' o
  39.         PB7_Low();
    9 u! v, t/ {+ w) h) S! y
  40.         PB8_Low();4 D6 ^/ ]+ t! ^7 Y9 w. g' b
  41.         PB9_Low();0 m2 W' [0 R, z

  42. 2 G: A0 m! Y6 K. B# C5 ?
  43.         break ;
    ( e' T* x& D4 \3 V4 k6 G# Z4 v# f
  44.     case KEY_C13:
    6 M, w; G" u6 L
  45.         PB6_High();
    9 I7 E& h/ u+ b/ p
  46.         PB4_Low();
    " L  U. y8 i0 S
  47.         PB7_Low();
    5 X) V* Q( ]3 Z, o: T0 R5 O
  48.         PB8_Low();
    : u; ~0 n6 A* i1 f! O8 d
  49.         PB9_Low();
    " p( [8 }4 z, f
  50.         break ;
      x" S0 E% j+ N
  51.     case KEY_A0:
    $ T: ]/ l6 B: ]8 s- L; a
  52.         PB7_High();
    5 T. e/ M- |4 I" p7 }- n
  53.         PB6_Low();4 ]* X4 s# F( c3 p" k; w; |
  54.         PB4_Low();: ?. V+ p6 @+ x4 d, _2 y
  55.         PB8_Low();; _- m0 [# b- l% C$ B
  56.         PB9_Low();
    8 I7 e1 `) v' e& e& k0 {1 C, Q
  57.         break ;
    0 }$ _- v5 k5 L" A$ G
  58.     case KEY_A2:. }( @5 u9 e5 E, K; G4 K. j" W
  59.         PB8_High();% K. ~' V5 n$ i' Z) l; N1 Y
  60.         PB6_Low();
    6 p& ^& T; C# d* h- M! C. j
  61.         PB7_Low();
    $ }* r' e( f: R% |6 z. Y0 E
  62.         PB4_Low();5 Q8 X: _- m7 Z# `
  63.         PB9_Low();
    . p3 q8 l3 G! }7 w- g+ d% S
  64.         break ;! o% [5 t) ^$ y, R, C
  65.     case KEY_B0:
    1 }) C( A4 z& `! `* G
  66.         PB9_High();
    4 w) |4 G+ x: B' L$ g; i- ?9 j
  67.         PB6_Low();
    : j1 O2 d; l( @  y3 e9 w: D3 O
  68.         PB7_Low();
    5 n) Y5 w" p. F& u
  69.         PB8_Low();" p& M6 }  {1 M3 o
  70.         PB4_Low();
    5 `! \7 j( ~& I
  71.         break ;  _6 D$ f- w/ W# `% p; e1 g) _
  72. , F& q; H/ y6 f8 n
  73.     default :; h' G( u4 z; w% R
  74.         KEY.NUM  =         0 ;, d. N( _7 _) f& L# U8 ~6 f! j
  75.         break ;//没有符合的条件即执行本default  非必须
    " k$ G4 ^) C1 l, j
  76.     }
    9 Y& G+ |- h4 b3 M
  77. }
复制代码

% c) l" E0 F7 |/ e4.编写main主程序% E8 P; |/ X$ W

6 s# R! O" H$ @$ V& f
  1.   while (1)
      ~2 ], h5 A7 R4 G
  2.     {
    . t) J# e: a( Z$ Y5 P8 e! F4 P) _1 `
  3.            HAL_Delay(100);, j/ I# Y9 T7 `; E
  4.        BEE_KEY_READ();
    ( ^5 o9 [( S( u# S6 w  z+ r
  5.        BEE_KEY_LED();3 i( [  S* W9 ?3 @$ @
  6.     }
复制代码
4 ]0 {4 u6 H  P  M! H2 z
5.最后实现功能说明:按下PB5键,B4蓝灯点亮;按下PC13键,B6绿灯点亮;按下PA0键,B7黄灯点亮;按下PA2键,B8红灯点亮;按下PB0键,B9白灯点亮。5 b: W+ G& p) E- h* d" m
————————————————
. n7 v$ T5 m9 W8 U+ H版权声明:米蜂科技3 D1 x* C. ~' W) p$ j

' O, j! D8 Y; I! U0 e, I! p$ S
收藏 评论0 发布时间:2022-10-12 17:00

举报

0个回答

所属标签

相似分享

官网相关资源

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