本实例基于RIBEE_02开发板设计,5个按键分别是PB5、PC13、PA0、PA2、PB0,其余25个LED进行点亮动作,实现按键输入与LED输出逻辑功能。
z- j, O5 J4 P2 B) E# {' X* e3 B- [2 [, y P9 A
1.上芯片图与电路图- V! Z# I x# X- ~% r: Y; ]
# m: V3 x$ m9 d+ C$ Y6 \ n
; u3 F" O6 E+ m' `0 j- i. ^
+ X# P$ ?8 }. R+ j' Z
2 i& Z7 D: Z6 H' e, Q+ G z
* w6 \& D& t, ~& m
+ z* y$ z" r% W; L5 n5 W" W9 e H D% M: e& g1 D W' t
2.配置晶振,启用内部晶振,失能外部晶振。设置晶振倍频与分频,外设基础时钟配置为64MHZ。
+ D: y3 K' f. ], [5 F
% L9 K2 x" P0 b0 f/ |' o$ b 3.编写LED与按键KEY驱动程序5 @% D5 W3 D! L1 u
& q4 c9 f+ e) L: v1 K3 ^
LED.H文件& M& J( b H- ?- c. R3 ~% }
% C* Y+ d3 z9 o; \
- #ifndef __LED_H0 q4 ]. d% q. K9 M
- #define __LED_H
S! g; h; G- d - 5 Z, ^* o/ i0 S) f; B9 t
- /* Includes ------------------------------------------------------------------*/
: Q9 l/ c: Q+ n# Y' P/ ` - #include "stm32g0xx_hal.h"* |% @( R$ o% Q1 ]; B
- 9 F( P0 T F) e/ O: n
- typedef struct
7 Q, A9 I* [7 ?: L( r4 Z, m - {
9 H: B: O3 Q9 w! n' i/ R6 I - uint8_t NUM;
* l( z) L7 D: ]2 h$ I - } HORSE_Struct;
- ?2 E7 `8 {- r. j9 w$ j3 B# H - /************* 共25个灯跑马点亮 *************/
' t4 ~. `% \$ Y7 s - typedef enum {
) |' l- } E( X' V: f# L - BLUE_B1= 1, //蓝灯
/ H( U0 A6 g' q" X/ H: T. u - GREEN_B2, //绿灯9 G' ?5 X0 M5 n% d2 D3 _- i, t ]2 T
- YELLOW_B10, //黄灯9 z6 ^9 u/ U8 C0 e3 ?
- RED_B11, //红灯
* M* J1 [! _5 b2 p - WHITE_B12, //白灯
# a9 \! U& D2 [6 M9 g - BLUE_B13, //蓝灯( H J8 L3 ?9 r9 Q S
- GREEN_B14, //绿灯/ I N0 K. l' T9 [0 H( U
- YELLOW_B15, //黄灯$ G6 O5 R" a* b" N
- RED_A8, //红灯+ Y8 B' @8 j& F% O0 a/ f+ H
- WHITE_A9, //白灯: Y- ?- B6 Z- S% O
- BLUE_C6, //蓝灯: A4 s0 |1 T& b) `+ p$ m
- GREEN_C7, //绿灯1 L& ^9 h( D" U T5 j7 ~# Q. j8 {1 a
- YELLOW_A10, //黄灯0 G. \' K1 @$ ~
- RED_A11, //红灯5 L! M6 H: f% c8 V& R* C' ^
- WHITE_A12, //白灯* b$ {4 b7 D3 p/ ? Q
- BLUE_D0, //蓝灯- z; N6 X7 m; \0 v( v
- GREEN_D1, //绿灯
0 O9 U2 A; ]: J% l - YELLOW_D2, //黄灯* N% D$ T; v1 P# g2 i
- RED_D3, //红灯, o8 K; p. y# P! L$ E& o; {
- WHITE_B3, //白灯
! E$ k+ H* v M% ?; T - BLUE_B4, //蓝灯8 z1 Y! Z; s3 Z
- GREEN_B6, //绿灯 T! n$ u) N5 V; \: r/ }$ m# ~
- YELLOW_B7, //黄灯9 Q9 R" p0 T0 ]; n
- RED_B8, //红灯/ W3 W: ^9 z9 Q: O: m
- WHITE_B9, //白灯
, p6 {6 v+ N* a2 w: K! ^/ J1 V - } LEDEnum;0 ]+ m* m3 U. ^+ F {
- /* Private defines -----------------------------------------------------------*/! G& t- v4 J+ J4 n0 e. \ v5 A
- #define PA8_Pin GPIO_PIN_8
) u! f! }0 M" J) I: O+ C& g* A) j - #define PA8_GPIO_Port GPIOA- F: e* E* @6 b6 P
- #define PA8_High() HAL_GPIO_WritePin(GPIOA, PA8_Pin, GPIO_PIN_SET)
% W0 m8 e' F; ]+ ]8 C. Q0 Y- q# g - #define PA8_Low() HAL_GPIO_WritePin(GPIOA, PA8_Pin, GPIO_PIN_RESET)
$ C. H) j2 [5 L m5 j4 S - " v8 @( l/ ?+ _" S# O; [
- #define PA9_Pin GPIO_PIN_9, o& F s4 J6 P: c) M/ V2 y
- #define PA9_GPIO_Port GPIOA
- S, M+ Y5 V; T5 q7 x1 r( o9 N - #define PA9_High() HAL_GPIO_WritePin(GPIOA, PA9_Pin, GPIO_PIN_SET): [% c# c' r: [6 B& H4 W% \$ Z# q. c
- #define PA9_Low() HAL_GPIO_WritePin(GPIOA, PA9_Pin, GPIO_PIN_RESET)& B9 F! y& H, J" }: D }5 M
- q q {4 J0 @& q- a D4 u- #define PA10_Pin GPIO_PIN_10' d; ?! u: J, _! d" z9 v
- #define PA10_GPIO_Port GPIOA
y8 U( X p: d9 z* D - #define PA10_High() HAL_GPIO_WritePin(GPIOA, PA10_Pin, GPIO_PIN_SET)
3 p5 M8 d7 R/ } D+ o7 V" x. c - #define PA10_Low() HAL_GPIO_WritePin(GPIOA, PA10_Pin, GPIO_PIN_RESET)
5 K" Q% Q, F7 m& ? Y - ( u; W, M% X, m- z& u
- #define PA11_Pin GPIO_PIN_11; s/ o% j4 b# ?1 l# Q, D$ c
- #define PA11_GPIO_Port GPIOA
' z& ?# P, i1 N0 C3 G3 i - #define PA11_High() HAL_GPIO_WritePin(GPIOA, PA11_Pin, GPIO_PIN_SET)- [# f, f; C) B p' ?* i
- #define PA11_Low() HAL_GPIO_WritePin(GPIOA, PA11_Pin, GPIO_PIN_RESET)# M7 G2 f) @3 `
- 3 U0 Q3 e4 w1 Y- B
- #define PA12_Pin GPIO_PIN_121 W( y& ~& t h8 v3 p7 _6 K
- #define PA12_GPIO_Port GPIOA% k/ O9 F! z% n
- #define PA12_High() HAL_GPIO_WritePin(GPIOA, PA12_Pin, GPIO_PIN_SET)
& \6 L6 ^. B# o1 c' {' o6 h - #define PA12_Low() HAL_GPIO_WritePin(GPIOA, PA12_Pin, GPIO_PIN_RESET)
( Q: V8 M+ |7 S
/ M9 A: U7 h; ]% Q2 a- #define PA13_Pin GPIO_PIN_13
8 u, a t4 _3 e, q$ Q1 {9 t - #define PA13_GPIO_Port GPIOA( I& D+ w0 Y! K$ c' m* a2 o. Z) P
- #define PA13_High() HAL_GPIO_WritePin(GPIOA, PA13_Pin, GPIO_PIN_SET)* X- _/ u+ L( Q. p
- #define PA13_Low() HAL_GPIO_WritePin(GPIOA, PA13_Pin, GPIO_PIN_RESET)
, p9 w1 S; S9 ^& U0 I - 4 }4 \0 x3 ~) C' ^
- #define PA14_Pin GPIO_PIN_14; x: ?5 K9 q3 S) Z
- #define PA14_GPIO_Port GPIOA
+ E K( s* F3 T! M, ?9 j+ P( T- S5 X - #define PA14_High() HAL_GPIO_WritePin(GPIOA, PA14_Pin, GPIO_PIN_SET)
8 z0 U) I9 n! L1 s - #define PA14_Low() HAL_GPIO_WritePin(GPIOA, PA14_Pin, GPIO_PIN_RESET)5 F8 Z& K# i" O6 \/ M% Y( I7 w
3 s& W5 c1 K6 K% T( J% o$ H- #define PB1_Pin GPIO_PIN_1* O9 X" W. z3 d p: O& x b
- #define PB1_GPIO_Port GPIOB: V( X7 D: Q9 ~. v" D/ Z* I% w
- #define PB1_High() HAL_GPIO_WritePin(GPIOB, PB1_Pin, GPIO_PIN_SET)0 g( v* r0 y+ b( [" P- G/ n
- #define PB1_Low() HAL_GPIO_WritePin(GPIOB, PB1_Pin, GPIO_PIN_RESET)
6 M! l; V6 T0 H
9 x% G) d* Z/ o! O+ J- ]& Y, g- #define PB2_Pin GPIO_PIN_2# Y9 `) D5 r* c+ m. w- F) T/ P4 R
- #define PB2_GPIO_Port GPIOB
* H4 b0 P* J8 i4 r* b - #define PB2_High() HAL_GPIO_WritePin(GPIOB, PB2_Pin, GPIO_PIN_SET)
. @ G6 C% `0 ~ - #define PB2_Low() HAL_GPIO_WritePin(GPIOB, PB2_Pin, GPIO_PIN_RESET)
( m3 l% D* j9 v! A8 t/ j0 E - * [3 g, p% w5 a [8 O
- #define PB3_Pin GPIO_PIN_34 ^% K' {+ Q" ]
- #define PB3_GPIO_Port GPIOB' M' o, S7 v" N, e
- #define PB3_High() HAL_GPIO_WritePin(GPIOB, PB3_Pin, GPIO_PIN_SET)
( f8 T3 g6 X, ?( G - #define PB3_Low() HAL_GPIO_WritePin(GPIOB, PB3_Pin, GPIO_PIN_RESET)6 p" n5 }0 ^- l- r9 r! X5 u! ^5 N' T' N
, K4 l0 Z' o4 o( d4 E q8 k. m- #define PB4_Pin GPIO_PIN_4
6 F: h- H# {% h1 o, V% H1 R( p - #define PB4_GPIO_Port GPIOB
- U. E$ e; L3 j - #define PB4_High() HAL_GPIO_WritePin(GPIOB, PB4_Pin, GPIO_PIN_SET)* [! x1 s& q( Q2 y0 R9 W) h
- #define PB4_Low() HAL_GPIO_WritePin(GPIOB, PB4_Pin, GPIO_PIN_RESET)
5 x2 t2 T3 G$ x# { - / Q; w: M9 D i2 L$ w0 l' K+ S
- #define PB6_Pin GPIO_PIN_6
9 i+ m" u6 M4 D1 M; s8 G# m9 R - #define PB6_GPIO_Port GPIOB
$ u: K5 ]* v! W5 c! W# Y3 x' D - #define PB6_High() HAL_GPIO_WritePin(GPIOB, PB6_Pin, GPIO_PIN_SET)
- e- S0 G8 t: x8 w, H+ I7 r( F - #define PB6_Low() HAL_GPIO_WritePin(GPIOB, PB6_Pin, GPIO_PIN_RESET)0 J9 G1 A6 k* H, `4 \/ {
- $ z0 v3 H3 F5 a1 C8 B
- #define PB7_Pin GPIO_PIN_7
) w6 Y( @4 b: g: T1 z- P e - #define PB7_GPIO_Port GPIOB4 Y2 ]7 I% B! h8 c: ^
- #define PB7_High() HAL_GPIO_WritePin(GPIOB, PB7_Pin, GPIO_PIN_SET)
- b7 P, d/ ^8 s - #define PB7_Low() HAL_GPIO_WritePin(GPIOB, PB7_Pin, GPIO_PIN_RESET)
7 B1 ?/ S- U: x/ E& \6 z/ F& b, m3 z
# R1 t$ `0 T' D8 ?! b9 [$ E( [- #define PB8_Pin GPIO_PIN_84 U# `% ~. T/ H( n0 ]+ P
- #define PB8_GPIO_Port GPIOB
" f9 Y$ z, E7 p2 ? - #define PB8_High() HAL_GPIO_WritePin(GPIOB, PB8_Pin, GPIO_PIN_SET)
( j$ w& b1 N" ^1 e7 y4 t% g - #define PB8_Low() HAL_GPIO_WritePin(GPIOB, PB8_Pin, GPIO_PIN_RESET)
9 t) Z7 ^1 s/ |$ p
: l Z5 M: r3 V* |% d- #define PB9_Pin GPIO_PIN_9# U3 Q* M6 E. E- t
- #define PB9_GPIO_Port GPIOB( P% O( l. |0 F
- #define PB9_High() HAL_GPIO_WritePin(GPIOB, PB9_Pin, GPIO_PIN_SET)
$ p! w$ }( f# ?5 B( X9 J4 F - #define PB9_Low() HAL_GPIO_WritePin(GPIOB, PB9_Pin, GPIO_PIN_RESET)# s1 v" i3 \+ R; @) A
- ! b$ Y3 A) w" m9 c" f5 B) i
- #define PB10_Pin GPIO_PIN_107 H5 x) u" i* d$ k4 Q7 O! o* E
- #define PB10_GPIO_Port GPIOB
9 W$ G7 M* \) C* Q) b3 [/ u4 P - #define PB10_High() HAL_GPIO_WritePin(GPIOB, PB10_Pin, GPIO_PIN_SET)
+ I$ g0 p) P8 R; H f& v- J - #define PB10_Low() HAL_GPIO_WritePin(GPIOB, PB10_Pin, GPIO_PIN_RESET)# V2 R8 ~9 O+ f
8 z, d/ n8 l" y2 V+ }: E' x- #define PB11_Pin GPIO_PIN_11
* ]: @. p& ~7 e# P9 \6 L - #define PB11_GPIO_Port GPIOB, ^' E4 u+ k9 @1 s, j* A( A
- #define PB11_High() HAL_GPIO_WritePin(GPIOB, PB11_Pin, GPIO_PIN_SET), N8 d& B3 i. C
- #define PB11_Low() HAL_GPIO_WritePin(GPIOB, PB11_Pin, GPIO_PIN_RESET), `2 G0 b8 ?3 I: T1 _* g ]* |
- & q2 ~% c e; v) I/ F( B9 T C
- #define PB12_Pin GPIO_PIN_123 }) P# @# x7 q4 D6 o( Z5 k, j* E
- #define PB12_GPIO_Port GPIOB0 p0 S ]0 T5 o _- A+ n
- #define PB12_High() HAL_GPIO_WritePin(GPIOB, PB12_Pin, GPIO_PIN_SET)
5 G, _& S, D3 u e" O - #define PB12_Low() HAL_GPIO_WritePin(GPIOB, PB12_Pin, GPIO_PIN_RESET)
+ } l4 R+ x4 y/ I# F$ t. ^! G# m - E5 d' Y" [4 X7 @* M3 N9 n
- #define PB13_Pin GPIO_PIN_13
, L( k) h2 R/ o& C - #define PB13_GPIO_Port GPIOB3 J- s6 }& c0 t1 ~, r" E2 h; R
- #define PB13_High() HAL_GPIO_WritePin(GPIOB, PB13_Pin, GPIO_PIN_SET)$ o0 r" Z9 K3 {. i9 U9 o
- #define PB13_Low() HAL_GPIO_WritePin(GPIOB, PB13_Pin, GPIO_PIN_RESET)
- K0 d9 V" i5 S4 N- Y" }
/ z3 X! N0 A* R0 ^, S% D, m- #define PB14_Pin GPIO_PIN_14: b/ y& \0 Z- M4 c
- #define PB14_GPIO_Port GPIOB
. Q5 @ e" }, R - #define PB14_High() HAL_GPIO_WritePin(GPIOB, PB14_Pin, GPIO_PIN_SET)
5 H2 J% }, D1 N& j - #define PB14_Low() HAL_GPIO_WritePin(GPIOB, PB14_Pin, GPIO_PIN_RESET)
7 ^/ ~. m, U. s+ B/ M* W - 9 t1 b/ t5 o! c
- #define PB15_Pin GPIO_PIN_15" I( ` G. a( N: o0 m/ w: V5 q3 ^
- #define PB15_GPIO_Port GPIOB
/ {) {% R, {! d! f) M( W- o6 N( t - #define PB15_High() HAL_GPIO_WritePin(GPIOB, PB15_Pin, GPIO_PIN_SET)
/ g# [5 _3 I7 u8 c - #define PB15_Low() HAL_GPIO_WritePin(GPIOB, PB15_Pin, GPIO_PIN_RESET)/ F5 Q0 D' Q' @
! B# }3 w& s2 F1 J- #define PC6_Pin GPIO_PIN_6
7 `% c- X2 l3 _/ Q. J1 g - #define PC6_GPIO_Port GPIOC
4 a2 y& i" U6 {7 S7 h( t - #define PC6_High() HAL_GPIO_WritePin(GPIOC, PC6_Pin, GPIO_PIN_SET)6 I$ B7 t; C' y2 l" x3 J
- #define PC6_Low() HAL_GPIO_WritePin(GPIOC, PC6_Pin, GPIO_PIN_RESET). T+ {8 C; k1 _
, v/ j, N u$ @4 y: {- #define PC7_Pin GPIO_PIN_71 e1 h; N: Z. o- d
- #define PC7_GPIO_Port GPIOC* `; W( C; @2 M# Y
- #define PC7_High() HAL_GPIO_WritePin(GPIOC, PC7_Pin, GPIO_PIN_SET)5 l1 U' s; Y0 y; A; i
- #define PC7_Low() HAL_GPIO_WritePin(GPIOC, PC7_Pin, GPIO_PIN_RESET)
% A! o2 R# m5 B' |/ v* m
9 o. V, J |, `4 |1 P1 R/ q8 k- #define PD0_Pin GPIO_PIN_00 i/ k3 S( }5 c* O5 {6 Z T
- #define PD0_GPIO_Port GPIOD
, ]5 u2 ~3 L# c% V - #define PD0_High() HAL_GPIO_WritePin(GPIOD, PD0_Pin, GPIO_PIN_SET)% k+ G% D" Y4 P/ a
- #define PD0_Low() HAL_GPIO_WritePin(GPIOD, PD0_Pin, GPIO_PIN_RESET)) E3 g1 N4 M% }, ?9 H$ V: ^
; M6 \, P1 }3 l! v _2 n8 Z- #define PD1_Pin GPIO_PIN_14 R- ]# g* u( Y. ]9 c+ O
- #define PD1_GPIO_Port GPIOD
" Q G& d, D! o/ _2 L H - #define PD1_High() HAL_GPIO_WritePin(GPIOD, PD1_Pin, GPIO_PIN_SET)6 e! P, } `6 e% g8 y3 \0 d: c3 ^
- #define PD1_Low() HAL_GPIO_WritePin(GPIOD, PD1_Pin, GPIO_PIN_RESET)" |; l- M6 {# E7 L
- ; t2 u1 F- e4 K5 v' B
- #define PD2_Pin GPIO_PIN_2; S$ o- `+ b' M1 C5 W S
- #define PD2_GPIO_Port GPIOD4 q. M5 m. `1 ~. B( o) s1 `
- #define PD2_High() HAL_GPIO_WritePin(GPIOD, PD2_Pin, GPIO_PIN_SET)
! K0 j: w& s. w; [; h3 X - #define PD2_Low() HAL_GPIO_WritePin(GPIOD, PD2_Pin, GPIO_PIN_RESET)3 Y6 g3 p0 v; Y. Z1 k/ _) g
- : u* f- s* ]6 M% H7 i! h4 v
- #define PD3_Pin GPIO_PIN_31 E) k- {' K# k1 a" P: |, H/ A
- #define PD3_GPIO_Port GPIOD
7 l1 W) v$ F; V; M: e2 M - #define PD3_High() HAL_GPIO_WritePin(GPIOD, PD3_Pin, GPIO_PIN_SET)' C4 y; e* P0 H7 j! p' H( N
- #define PD3_Low() HAL_GPIO_WritePin(GPIOD, PD3_Pin, GPIO_PIN_RESET)
; V3 \+ j" B h$ T# \) S - 1 E9 }$ Q% ~( {# Y, [
- /* USER CODE BEGIN Private defines */5 l/ ?+ }& n. w
- extern void BEE_GPIO_HORSE(void);
7 O, g$ @4 a7 y9 |6 { _ - /* USER CODE END Private defines */ n! D; M" V- j W& X: e1 C% W
# ^6 c& [% C# w4 b% X: ~* l
. @0 Q5 z* T) t; x( w; I: z: j- #endif /* __LED_H */
. L4 j/ N: g; Y1 t$ @( s - ) l+ \! |% ^: \+ t" E6 q, y, J8 p
- /****END OF FILE****/
复制代码
2 l1 f% J" R1 z, D( I& CLED.C文件
% l( i Q$ i% a+ [/ J( B$ w" i) Z" ^4 g2 y9 ~/ C* G7 Q
- #include "BEE_LED.h"7 `3 v0 b$ t0 m6 y. p0 m& |
- g: ^3 |3 B5 H- HORSE_Struct HORSE= {0};% Z4 Q9 z2 o0 k% e
- ; I' i) Y- J4 F+ I3 v8 _9 H1 P5 @
- /* Private function prototypes --------25 LED HORSE RACE---------------------*/- M' T2 c( ^& p8 Y( l+ Q5 M
- void BEE_GPIO_HORSE(void)) D4 f& C# C5 R% i7 `
- {
0 F6 o+ h1 r6 e% t; x( [' X - HORSE.NUM++;
2 z% i7 Y8 N; n6 n7 u% G3 O6 F- D - switch(HORSE.NUM); o' N7 X8 d W! b& l3 N) I7 j
- {& r# ^7 C. M6 u6 A
- case BLUE_B1 :! ~( b) r7 e1 ^; M4 P7 }
- PB1_High();
: n4 [, ?$ Z1 e9 S# f5 X5 s; ? - PB2_Low(); l& [) ?2 h7 B- \0 f8 i
- PB10_Low();
0 H2 t. x& I% t1 U) {( e - PB11_Low();
" F" H) b4 @; O/ X' Z! C3 H - PB12_Low();
2 a) W, S% T2 J6 y" Y$ z - PB13_Low();, F0 P! r( ~! l0 l' |1 S' W- w
- PB14_Low();3 B, w! Z% I9 Y2 Z* E: Y6 o7 Q8 P, H
- PB15_Low();' p# P- X4 Q, d
- PA8_Low();# X0 ^8 A/ u! d! J. K U
- PA9_Low();7 R; K+ ^) U4 h0 r$ |
- PC6_Low();
- o$ n" H3 b: ^& b - PC7_Low();6 k6 v, U2 I" _' r' p
- PA10_Low();- ^# m% b) \: D; a! f, _" n
- PA11_Low();
* S: A- q4 ?! l+ \, a0 j5 Q4 \ - PA12_Low();' A# T& R3 m) W6 s @0 E2 \9 c
- PD0_Low();
6 Z+ f" I6 z- M, b - PD1_Low();
0 C5 I1 y6 x/ W$ O% r% Z - PD2_Low();
: U5 c- A& V( u9 T$ u - PD3_Low();+ ~) x; Q2 |" J7 d
- PB3_Low();
6 h- F% y" Z: k9 z1 I2 `. S - PB4_Low();
# K4 U+ e1 h" N2 q" R# A1 }0 b - PB6_Low();6 H6 `- m* h1 P: h$ `3 R* _3 j
- PB7_Low();
7 |6 E5 {3 c5 ]% Y" Q' h - PB8_Low();- U0 z3 ^7 G+ h( V5 h1 i7 u
- PB9_Low();
- D! \$ x% H# C# c' m5 w4 Z1 a1 L - 4 w4 ?$ q t& Z/ y* x
- break ;
" P: [* ~1 k* P0 D - case GREEN_B2 :+ X' r! b8 f5 |8 H! A( q
- PB1_Low();
4 Z+ M& w* I" A% k( R& B! }7 N" I - PB2_High();) \" N- ?1 k, I% Z. {8 [! S
- break ;
# F. J' f1 T. i/ q2 g# Z - case YELLOW_B10 :
$ _( l) s/ O- q - PB2_Low();
( n- N. ]% w3 V - PB10_High();& J: S, G5 l; l8 s3 |- f [& q. f6 N
- break ;
}+ @4 y7 D. U2 D+ G: n( n3 T6 w) C - case RED_B11 :( U$ \7 M2 v0 _* Z
- PB10_Low();
2 x& F, v$ K8 g; K - PB11_High();9 w) u) e) D4 d& K3 N& E4 F
- break ;
* s3 K+ O3 i, e# } - case WHITE_B12 :
0 ~8 F& |5 D* M - PB11_Low();1 f1 c" M6 e! ]0 y% T! K$ M
- PB12_High();
6 f6 v0 p, i/ s; f - break ;% h! F% |) }% j. h2 R
- case BLUE_B13 :
) B' T D% O4 z% A8 @" t7 z0 c - PB12_Low();$ P0 o/ B+ ~8 G: _
- PB13_High();0 H; `- o0 X8 R/ M* O' ]* K! S6 u
- break ;
0 a2 x" Z+ P) V2 D - case GREEN_B14 :
. z8 t% b8 D# r8 B - PB13_Low();
6 M- u& x7 ~, A8 E$ s - PB14_High();8 w. O, H# J7 [9 `* y( r$ b% O" o
- break ;
R7 K) d2 z6 }/ q - case YELLOW_B15 :# I6 T" @# A3 D( P ]4 s# A
- PB14_Low();, S; u* F. X S
- PB15_High();# [! E3 O: J' O* ^4 I- N
- break ;
; p$ k# X- ^* y# ? K1 E - case RED_A8 :
9 W* P+ a& E Q1 O/ [2 ~' Z: m - PB15_Low();% _* l5 ?7 Y/ q: z; o2 A: Y
- PA8_High();
) c A& g# X2 a' A - break ;
! _! F% c8 x/ }6 \- ? - case WHITE_A9 :
; P* P; D* }9 g - PA8_Low();
/ W) O" }5 L: }& n3 ?* L5 c - PA9_High();2 t5 }( r [# u& y/ h+ e
- break ;
6 i1 W1 i9 q- |$ m l - case BLUE_C6 :, h& @+ b7 J! p i2 K; U- s
- PA9_Low();/ T8 m S! }! m( J
- PC6_High();6 R$ Q( o$ g1 Y4 W. t
- break ;
* D1 J3 M1 Z& ?# O E5 v U+ B - case GREEN_C7 :
# Q% S+ C0 |% @0 Z$ E4 l - PC6_Low();
" n$ y5 T; O/ ^ - PC7_High();
6 k& w9 H5 A- U$ X3 U; ? - break ;4 `/ B6 s! R8 G& Y9 g! F& {
- case YELLOW_A10 :. X" E/ y8 g' u K3 Y) |0 H
- PC7_Low();; l' @% u2 o/ E( [3 h' s$ F' V
- PA10_High();
5 p6 x& B' T# q - break ;
+ V& a+ \. _9 C4 E4 f - case RED_A11 :
' H2 L/ ]1 ~! s/ c% t- L3 { - PA10_Low();
- x* m3 h* J4 _/ G - PA11_High();
+ H3 w/ }7 ~# i! O* i - break ;5 x, F2 H6 z6 C8 K( E% h
- case WHITE_A12 : D7 v: p1 f( X0 `( O
- PA11_Low();
' _& K+ G4 ~7 F - PA12_High();$ k) T8 @- v8 K0 v x' p
- break ;
9 \# u8 b* O9 s$ j - case BLUE_D0 :2 O3 d$ u* i! ] B v! @6 ~
- PA12_Low();
3 t% N! k" N3 a$ [( K5 m6 _ - PD0_High();( C6 S0 ^1 G5 u L2 | n
- break ;* f! G: s# k. g; w+ r8 K5 u
- case GREEN_D1 : S9 J& P4 y7 `
- PD0_Low();' j6 t' n# j0 L/ ~/ G# D& ?4 T# e
- PD1_High();
" V# S0 L+ M) Q R, z - break ;
9 P: N5 b0 W( ]4 f' @ - case YELLOW_D2 :7 A! R2 }! `% W
- PD1_Low();4 T0 p4 f& z' S+ l u) N9 z, I2 F
- PD2_High();
) \8 a% B% ~8 h - break ;
4 |5 y: k+ Z4 t/ m- N2 A# ]; | - case RED_D3 :
( r2 `) c* l) p& ]+ \/ k& Q" F - PD2_Low();, a9 }) A9 r/ M" }$ { Y' B
- PD3_High();1 n+ p1 _9 r7 v' b* S
- break ;
& z+ v$ q/ A% _3 b5 I8 @ - case WHITE_B3 :
3 O" T: a7 W" Y; r8 I2 w+ M; ` - PD3_Low();8 q* q! C3 u" |3 l. M8 ? ]) y
- PB3_High();
4 R; I5 N- Z4 d) G - break ;2 s6 f0 W) v6 }! e: O* f
- case BLUE_B4:, a8 I6 B- X0 L, y- _
- PB3_Low();
% A- c( @! M/ T% T3 z* i - PB4_High();
3 y7 i: K4 O% F8 {; H - break ;
: w+ `7 w+ r* x [ `' z# b - case GREEN_B6:1 F9 |" l O9 q8 p6 H
- PB4_Low(); m) D3 Q6 M- c* K! O- v5 c
- PB6_High();/ W2 A2 S9 @9 H* n
- break ;
& \) ^( m' ~9 H) [: d# E - case YELLOW_B7:) |! L; c5 C0 g: g1 N8 z6 Y3 }
- PB6_Low();
+ x! {9 L0 I, ~% _1 j5 S - PB7_High();0 Q: K1 p& }0 W" {3 E
- break ;
- Z8 ~& P+ L# d" l- k* l: ^0 q, l - case RED_B8: {3 f/ a) |0 V
- PB7_Low();
% H1 r: g' p. B2 t - PB8_High();3 Y2 n; D+ ]; v9 a/ g
- break ;' `+ A# M1 X, g1 x0 ~4 v
- case WHITE_B9:
& p9 f3 l, O( Q; a- h5 i - PB8_Low();
2 C2 n4 M9 Y6 M9 d. X. E* ` - PB9_High();
5 x7 I1 O; e6 z - HORSE.NUM = 0 ;& e, S6 N$ L) T# D: x. B) l
- break ;" `$ b9 K5 b" f! T
, E% t% G8 F& L- i7 ]2 T2 P- default :
! U& N, B0 T9 s3 X7 O2 P- w5 } - HORSE.NUM = 0 ;
& {2 w0 q: h' e! z/ G/ _ - break ;//没有符合的条件即执行本default 非必须
A- Y: ^) u5 k" z - }
# q- x! ]1 e7 k0 \ - }
复制代码 7 P2 j; z$ X% }
KEY.H文件
' Q: e$ }$ ]* V: z8 i/ ~) N4 L0 ]6 C5 A7 N
- #ifndef __KEY_H2 k/ O- |- R; w" b8 a8 w+ N9 y% t
- #define __KEY_H
+ m! Q/ f& L' Z" D
I0 i# i0 s- H- /* Includes ------------------------------------------------------------------*/# z: q6 B7 G4 S- F9 O5 t
- #include "stm32g0xx_hal.h"6 }3 W. D$ n e
. {3 \7 ]/ `7 u" E! T& O" E" ?- typedef struct
5 }9 d0 Z; w$ ~8 C - {
/ L0 d% [* {3 B7 e% s - uint8_t NUM;3 ]0 b5 V1 @# {* ~$ S% g
- } KEY_Struct;6 Y+ L7 `+ M' `8 r4 m
- /************* 共5个按键 *************/$ W/ u) z- G9 V
- typedef enum {% c9 E }, j3 C! v& i) i
- KEY_B5= 1, //按键B5
0 W: K* @1 {. k' d6 G/ d* u - KEY_C13, //按键C13* @% g) s- Y2 N8 Y4 V7 ~1 R% }9 y; @
- KEY_A0, //按键A0) p2 o, [* Z% }+ t
- KEY_A2, //按键A2; ]/ |; g9 k7 |1 x
- KEY_B0, //按键B0$ w& }# _* o/ S4 U8 R
- } KEYEnum;2 {% h+ j) h* y/ ^. A
- /* Private defines ---------------INPUT AND READ PIN---------------------------*/
+ R7 @# Z8 I2 x8 D3 a3 H! A3 _ - #define PB5_Pin GPIO_PIN_5# i, ]; B/ g [+ [
- #define PB5_GPIO_Port GPIOB
/ W b' P- l" Z. H/ X8 {1 j. C' S9 @ - #define PB5_Read() HAL_GPIO_ReadPin(GPIOB, PB5_Pin)! `* i, c2 {$ Y' a1 ]
- ' A+ J6 F( R# v8 x
- #define PC13_Pin GPIO_PIN_13
( D" G, Z# z. p; m* L - #define PC13_GPIO_Port GPIOC
' L |1 Q' l! O. P6 s& u9 F - #define PC13_Read() HAL_GPIO_ReadPin(GPIOC, PC13_Pin). r) F- `& a3 {- R( V+ Y
) P. Y3 S9 N, W6 m" e$ m- #define PA0_Pin GPIO_PIN_0& K( k/ W$ k3 |& l, {
- #define PA0_GPIO_Port GPIOA# M1 t F( n9 |. @% |3 \
- #define PA0_Read() HAL_GPIO_ReadPin(GPIOA, PA0_Pin)
* G/ {5 D0 A* T3 W8 r& k - 2 ]6 }4 M, D, H c& d4 L! z
- #define PA2_Pin GPIO_PIN_2
4 c# X, E/ H$ t% O; Q% I5 A - #define PA2_GPIO_Port GPIOA% u/ m9 Y4 W3 e# f+ ^( h
- #define PA2_Read() HAL_GPIO_ReadPin(GPIOA, PA2_Pin)
0 b( [& I6 b+ G$ T M
: m- A% z. F9 `/ v- V- #define PB0_Pin GPIO_PIN_03 C' c M; \2 i. M6 e& p% {4 F
- #define PB0_GPIO_Port GPIOB
Z8 j, J: d9 U0 F - #define PB0_Read() HAL_GPIO_ReadPin(GPIOB, PB0_Pin)
7 u3 L `! d$ ^ w# O+ `! P6 ^
' E9 _+ m% F2 D5 ^
3 h2 `0 ^8 o L7 f/ u3 D
+ i& s2 b; W: \- /* USER CODE BEGIN Private defines */
- l$ e0 \& Z3 N! l( q" T - extern void BEE_KEY_READ(void);
F6 ]# h# a# p+ L; {/ o2 n( G8 A. Q - extern void BEE_KEY_LED(void);
7 u/ X8 Z' g7 F' \+ q6 _! \+ R# m9 R% c - /* USER CODE END Private defines */
, B5 ^2 o$ |- n( Q* C1 a3 {$ t$ @
0 c; ?7 j; |. {5 I6 e1 [+ l
' J3 C) p0 F- w$ r h' {- #endif /* __KEY_H */
复制代码 * b% @* u+ R: o; O& ^& D
KEY.C文件
" [) Q0 h8 U3 V; A4 T* s$ w* U1 g* ?. n8 I( t
- #include "BEE_KEY.h"
7 D" y1 {4 s$ t0 W. ^( k - #include "BEE_LED.h"
: r& r6 x7 p/ K9 ]! [' u- O
7 ^% B! Q$ ]; a# d6 O: y7 Q3 t- KEY_Struct KEY = {0};
$ g0 f0 v( }& {3 f2 g; J& }. _ - 8 K2 j0 l e& `# i: Y
- /* Private function prototypes --------5 KEY AND LED ---------------------*/
. P* U" J) y' P! H; G - void BEE_KEY_READ(void)8 N/ g) Y, P: E9 O: y* e6 Z
- {/ E1 E: S0 ~' ^
- if (PB5_Read()==0) ; A; P/ F3 @) L) H7 a! Z+ v* r
- KEY.NUM=KEY_B5;& |0 J. J5 V* o* i. T/ Q# Y: Z& @. Y
- //else% V* P R" v) C5 Z
- // KEY.NUM=0;! ] h f5 i) P8 q5 d5 T/ h
- if (PC13_Read()==0)
2 g6 W9 Y6 {/ y% M6 M1 I0 E - KEY.NUM=KEY_C13;( j' H9 c7 M/ {. n* j; x
- //else
/ S; j0 \' F3 [( a - // KEY.NUM=0;4 I5 _1 t3 [( R' [+ b4 g6 w
- if (PA0_Read()==0) 6 o1 j4 q% F5 U) \, e$ f# h
- KEY.NUM=KEY_A0;7 |9 R3 E9 A/ ^. c
- // else
0 d" Y1 u# q; `! I$ E - // KEY.NUM=0;
# M5 P6 Q% o% S6 f# K! ?& ?+ c, t - if (PA2_Read()==0) - \5 p, M( `' v' _( g. V
- KEY.NUM=KEY_A2;9 F# H! `4 T5 T: s8 T Z2 c$ K8 F1 g
- //else1 Z( q6 L- X G9 \$ V
- // KEY.NUM=0;/ _5 Y6 q5 Y* A. z, E
- if (PB0_Read()==0)
1 _% v0 m! @+ `6 T) o - KEY.NUM=KEY_B0;
8 J8 U8 Y) {! `5 f* P - //else
8 j( h9 ~$ z$ z5 i5 U! O - // KEY.NUM=0;; J9 F. l2 Z* V. r/ `1 P- R
- }
- H3 [2 x6 ~! Q- r- a [
2 r) o( F; N% j/ l/ c; L- void BEE_KEY_LED(void)- S" j7 }. F: A) x( D9 ?* J
- {/ A/ J' T# m! N
- 8 z* X+ L, e- @& O9 G2 J
- switch(KEY.NUM)& T" ?2 `0 R5 y3 t8 l- S
- {
0 ?' J7 f0 X9 e6 m1 A - case KEY_B5:9 u3 O" J2 S3 A5 t) c
- PB4_High();
, F; I q9 o' g* F) f- Q+ p) s - PB6_Low();% Y# {' y# B& ~$ ~0 a$ W" Z
- PB7_Low();
7 _4 ]5 F/ K/ l, H* g9 s6 P - PB8_Low();: [( B& u$ N v, `' T4 d" V2 b
- PB9_Low();3 B8 Q4 w0 E4 ?: t1 d
# v, R& d2 W1 z4 A/ o- break ;
3 w7 g5 ~5 C+ h' l. V - case KEY_C13:( v+ B) e# u! I; _% U" H
- PB6_High();" R+ |+ H4 c7 S: [
- PB4_Low();* K- r8 n* Y$ ]7 a0 L' T. s0 q/ ~! F: A
- PB7_Low();
7 H" \8 R. j1 M- G1 V5 l - PB8_Low();8 U1 k2 e i- p! Z( A/ A
- PB9_Low();) Z! Z1 P4 s; n
- break ;
( e: `& i7 }4 T2 e( _! ?% o - case KEY_A0:
4 [# g' |/ H3 A+ h; r - PB7_High();# {0 j# i; [/ Q! L, T/ y
- PB6_Low();
4 N, V* y1 t! C9 u9 F - PB4_Low();9 s/ {: H. W- m& D
- PB8_Low();/ X7 {& J# j% T, b: n/ R
- PB9_Low();# L3 e, ~* J$ s# C8 | `
- break ;
/ H* K) H' Q! q - case KEY_A2:
! I$ @- y. `# k9 f - PB8_High();
! z, l, X) @" [ - PB6_Low();
5 v0 k6 X8 D% E9 i0 O8 K - PB7_Low();
% _! ^7 p( X3 G! @: c } - PB4_Low();
6 _- @+ Z6 T1 k! @4 ^) O1 | - PB9_Low();
8 P( j9 G4 }* P - break ;
; t% V8 l% y1 r: c% c - case KEY_B0: J$ r1 s4 t8 ~" ?
- PB9_High();7 J0 ?* A% g2 X8 G+ f2 x( [3 J
- PB6_Low();# P* `8 R: g N: t a
- PB7_Low();
7 F% C; {' i* r) n4 N/ ]+ ? - PB8_Low();4 V7 g( q4 {% n7 v" @
- PB4_Low();
3 A. Y6 b' K. ?( k - break ;
* L0 a+ x' j5 t y9 e" u( V
: o) y+ w/ z, I- default :
5 V9 L s0 [0 a9 f( K$ S: g# k+ m4 q - KEY.NUM = 0 ;1 N6 `) ]* c9 _8 B9 M5 y1 g
- break ;//没有符合的条件即执行本default 非必须
9 f* f {. s x9 p; H2 X, R6 G - }7 c# q. T. \/ ^+ O# h' { V
- }
复制代码
; T6 h) y/ E4 V9 j' q( T4.编写main主程序
! O/ V4 D# o2 L' l W1 L& N* H& Y9 Z+ Z* L! a
- while (1)
, i, ] l. i! l) j* s4 o/ g @0 U - {, p! h9 [( h' K" c' U' K
- HAL_Delay(100);
4 V4 b( W. N( G. M7 x/ S - BEE_KEY_READ();
@, @3 a P" A0 T9 a - BEE_KEY_LED();
0 D6 | H7 w/ _7 F8 `' s - }
复制代码
$ f- w$ z7 R! V" _# i. m5.最后实现功能说明:按下PB5键,B4蓝灯点亮;按下PC13键,B6绿灯点亮;按下PA0键,B7黄灯点亮;按下PA2键,B8红灯点亮;按下PB0键,B9白灯点亮。7 S' Z( u2 L) H) ]- }7 J
————————————————3 D( _" a0 C8 ~" l4 ]
版权声明:米蜂科技
7 Y- L3 o8 y6 c4 r- c( J- _. d! a
" t8 ?' k- [; a! N# p |