一、配置CubeMX
- H) r: Q. G7 n6 L
. k& Q1 s* ?: i
& m g/ ~) f7 t; s/ |. k) i! y0 t6 f0 `9 s) d; z9 j
9 g. ^& h% e* f5 l% }! t
! ]9 X4 M: A* G0 d( K7 \4 l: R3 f) F( k1 ^ N9 d% K" M3 \
$ w+ r. x7 }! g- q3 C2 w& r( K Y# R7 e: ?
配置GPIO,LED和LCD所用到的引脚+ D' ^2 ~/ T7 p5 X0 S
% ]* I9 @1 ^6 t& d7 m
$ {& H" M; ?+ o, w2 k6 ?' Z: X
7 d' ^4 U; y( D, t' p5 t. |. ^
! q/ j( H# Z! g$ Q1 ~. Z' z; i
; {8 D) c# u! R8 W9 d! C
生成Keil,打开工程,编译一下检查配置是否有错误7 q. {. }. b Y; [6 K
+ v$ N2 W7 J6 m8 c* Y, k" U9 {
8 `4 ~, l( [7 T7 }
; p- t% A& j3 A, `+ p, t: w二、添加相应的模块及代码
* o% I6 I2 u; J# |1 [(1)添加LCD模块的文件3 ?. c p! R) V
添加相应的lcd.h头文件0 `! {/ r/ q. X4 S! z* U$ I5 g
- _$ b! l4 A3 T* P% c, V) U) J
l$ r1 F; ~. m, h. q/ g
- Q1 O E* J2 }: |
添加初始化LCD的代码 P" Z# H& F( x9 U r+ l6 ^1 X; p
6 V# A3 h* m) X
0 _! f$ q5 {: C( O
; q: v; h, J) }$ h3 ]3 @( C' T7 U- ]
(2)添加key按键模块的文件及代码/ F5 Q* |& M6 L I3 {5 n
新建一个文件先保存为key.c9 r9 L; Y- x/ [; Z& }
$ V# O! O1 _1 s+ u$ t8 o6 ^
: F4 t5 t2 b, ^/ v& p
1 s P5 _; X- j8 G
新建一个文件保存为key.h; K7 g h( |& J7 K% j) a( }
0 R1 ~! p Y$ k2 B8 S
' t- u( h$ s7 k6 F- X' e5 p9 @* n' E; y0 ? m
将key.c文件加载到工程中去
8 }5 ^1 _/ G8 T! h7 S6 g h4 N4 E' Y/ L* G
9 ^5 }2 @7 W5 S D5 m5 d7 I
. n/ K9 j! l: B) Y& i$ A! e0 x在key.c文件里输入#include “key.h”,后编译,实现.h文件与环境的关联
! c- Z! m. h+ {1 @7 D6 g# n6 \
' R1 u( \& u; f' @$ _* {
' a6 Q }4 j" _2 i. Z
. o6 H j9 }2 O- z+ D在key.h中添加要用到的函数的头文件8 v! k3 K) s& Q2 N1 W, S
! h: Z! W% q' M/ I6 E读取按键要用到的函数4 H* n# o9 ]4 U ]: I
. P9 m* T5 c" x! P$ Y
2 M1 Z1 ?' @" ~' c/ s6 \
8 ?' |# i; i4 ]+ H8 m要添加的头文件
; E. `9 t/ X! c. h5 C4 ?* U5 ?1 K
" p$ T6 E5 I0 L
5 ]# n) k3 g/ o" m- Y! h7 Q4 n* _1 Y
将此头文件添加到key.h文件中去,保存并编译+ Y: t' X9 g) f+ J+ p9 K0 s; ?
- S) ]* K; f9 A4 f4 D( f2 p& D
$ Y! F6 g, c. q9 ~
+ k# x! m2 E$ ?, Y& A$ p按键要用到的引脚的定义写到key.h文件中去,并添加按键函数声明: q- \" a1 z" q6 m; S
- #define KB1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)' t$ L h" L9 O2 {' ?. o" n/ {
- #define KB2 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)! @% B% R8 L8 Y7 d
- #define KB3 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2). ]/ H! o0 \3 x& v/ M/ G* B) j- E
- #define KB4 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)
复制代码
( h2 O1 W' ~/ o ^6 r2 U9 N
( U' Z1 f3 T) |5 \: k% R9 h6 ^
0 ^. U6 s# w( O* [- k
在key.c中添加两个按键函数的代码,保存并编译
S8 f7 o+ x8 ~* z1 A, s- char Key_Scan(void)
$ D& I1 p- Y. {5 b - {
: E8 G: q+ g9 O% o9 n - static int kb1_count = 0, kb2_count = 0, kb3_count = 0, kb4_count = 0;! i% }* J. ~. T" h
- char key_value = 0;
2 n* K! c2 f. T4 r - //key10 B4 x' ?3 b. p+ R. ~( U
- if(KB1 == 0)7 |2 e0 |5 A/ g
- {- J( `$ `/ Z" F) b+ P5 P/ q
- HAL_Delay(10); //去抖' n3 v- J" m( D! b. `, E/ _' e
- if(KB1 == 0)
0 [* ]! {$ B4 e. j" u( @3 M - {; q) w( f3 F. B
- kb1_count++;
6 e6 ~0 @, a4 J* g& M0 p7 ^: C: l - if(kb1_count == 1): F# w, S5 B0 \! g( C: Q) [$ X
- {: m( Z- }$ I: E3 P% k/ E
- key_value = 1;( ?! z$ ]3 i+ } f0 s
- while(KB1 == GPIO_PIN_RESET); //按键松开效果
4 Y, _' C. j) \# ?8 u - }
: O. z% d L& M1 H+ S - }
: x6 N4 V U2 A2 X% i& b+ L* h - }* o y( H8 E+ B7 t4 [, T- _
- else
0 v* B$ c2 ~' [: R - {
) [ ~/ f" M6 C- \' R - kb1_count = 0;
/ K& W0 M. U/ F" }' H - }& u: ]8 [3 ?6 p' s: s
- 0 g* a7 E/ ?( f/ p! Z
- //key2
# g7 i/ L" K# s4 G6 k - if(KB2 == 0). G: x! v0 G |4 Y
- {
% n+ z+ _2 J: Y1 m j8 T - HAL_Delay(10); //去抖
9 p8 a5 M) a6 E! N+ R - if(KB2 == 0)7 O& v1 |' z* | n- l* Q, h
- {
. r/ [* h2 p# d7 L/ ]' C - kb2_count++;4 S9 H; U n* s
- if(kb2_count == 1)
# M2 N7 ~! @. S, ^' h7 K - {" c& j% v8 o: ~' e5 T7 O
- key_value = 2;! a( I5 b' ~2 N
- while(KB2 == GPIO_PIN_RESET);
9 b& o& }# X! S) J# _ - }3 x9 d" b: e. r5 i8 N( g
- }
& Q7 [3 s/ W- f6 ]' B3 \ x - }7 D. @% x* ^- I K
- else 6 e& Y# Q) o4 ?% G! G6 P
- {
& D N P' J* O( p( |7 r: X - kb2_count = 0;
/ N" w5 V& a1 s0 `0 `6 F - }; u6 r0 W0 E! a: B2 {! S
- $ ~3 D e' |# t4 q' e
- //key3
# d9 c9 z( `+ @ - if(KB3 == 0)
! A# [* a, \- b* U - {
" I4 l, [7 N9 P3 m) v- I) V$ i U - HAL_Delay(10); //È¥¶¶2 Q: w% d# h/ @
- if(KB3 == 0)# c: c! C: ^$ r1 m) a- D
- {
" @4 H/ J7 Q, S- m& C% | - kb3_count++;
7 l- P+ Z, W4 V2 z$ x2 M+ j! c6 T - if(kb3_count == 1)- ^& z4 `( N4 W! ~8 J% K/ O
- {
% S' P9 R6 s. z7 c" F - key_value = 3;( {3 o) h3 ^* Y( z/ J
- while(KB3 == GPIO_PIN_RESET); " ?& o. F9 x" G* \" t9 G) b
- }
5 j! y+ G: r% y' U/ j R# n z - }
' a6 k u. e9 z) ~. U" \ - }5 t8 G; a- _6 D( ]8 {! d( H. ?4 C
- else
8 U! p( W! Q: Z" q - {
2 |) ~, Z$ A; u/ x1 I6 t& ]5 z - kb3_count = 0;
1 x: } U H2 O) Z8 `' w - }
4 v$ g; ?; n7 i" [7 u! u z -
4 Y0 C9 ?( J! L9 x - //key4
8 P" @4 t4 U3 Q, K1 {/ B+ D! x - if(KB4 == 0)
: S1 t8 b9 A0 ^) K, K2 l - {
$ Y& K& R5 _" ~ - HAL_Delay(10); //去抖' |3 w" v7 g4 K7 J; H. \
- if(KB4 == 0)
9 E: a1 ^! E, G& R/ k7 Y5 s( w - {
1 F8 R: k o0 u - kb4_count++;
& o% x/ f% _: h& ~! A - if(kb4_count == 1)& @, O+ @ e% w. ^
- {: B$ h+ D }, E+ R
- key_value = 4;( _, C% j; R* h& G5 A: s# M9 q
- while(KB4 == GPIO_PIN_RESET); 6 k( P3 ~* c$ N g
- } " K6 H- Q. r& r y3 ^' X8 K( Q
- }$ H9 G7 B- S1 N. L& p0 }3 y+ a
- }
; a, D4 i( l" U2 t - else
7 B+ y" e# ]# E3 U - {
* s' I9 q1 N+ p9 L! L - kb4_count = 0; / c7 E6 a/ D& i0 Q
- } - Q1 n* R" o. G/ V
- 6 x9 n) Z: \; `+ a+ k( K' N% g7 f. ?
- return key_value;
8 R0 b5 Y: T* U+ O, M- T" S8 E - }
: Z% E6 w3 ]8 q5 U5 g -
/ d4 D. M; L# C# D2 ]+ j - //³¤°´¶Ì°´
3 Q; f% G! j, \& | - char Key_Scan_CD(void)
. J. @4 k& T# f+ R- Z - {* H, p2 q4 q1 U# @. I
- static int kb1_count = 0, kb2_count = 0, kb3_count = 0, kb4_count = 0;
) y8 E5 c3 p j1 h' y8 X - char key_value = 0;
; u3 E" `* U3 o, y. {9 ^1 b - //key1
- b* x2 g$ M! @7 p( s9 }! B - if(KB1 == 0)
' B9 U# A: M, E. w7 i0 f - {3 p4 ?8 \' d1 k- i9 {' c B
- HAL_Delay(10); //去抖
# ^' ^0 ^; a+ v3 d7 J2 L+ T7 L" M - if(KB1 == 0)5 e9 R$ y8 E3 o8 f: [$ X! L: g+ A0 Q
- {
( n9 H+ e1 c4 T - kb1_count++;
4 I. n7 M1 i: {) y% d t2 m - if(kb1_count > 70)
2 I4 U; y4 |+ Z# b8 f' q - {
' g% C- \" N2 H - key_value = 11;% h( a& S+ Y& n
- }; w( [. u; @2 t. N
- }
! w, r* p! k- s U' L( a1 h - }+ E0 L: R# P9 F3 `9 A7 d D. u
- else
+ v& H3 Q5 g1 y( ]9 I - {
3 L; k; i% B% _9 o2 | - if(kb1_count >= 1 && kb1_count <=50) ^# \5 k' G0 c" s2 X; Q
- key_value = 1;
8 j8 D5 Y) t* Y' q - kb1_count = 0; $ K1 l; B& k( L
- }
) d. k6 b* Q# R; Q -
/ T- J" d; \0 ]4 \ - //key2
! M: A" t0 \( e! G$ ^0 @3 w5 Q - if(KB2 == 0)
4 `/ v9 t& T( Y% j, f( x - {* v5 U' K4 Z1 |9 A
- HAL_Delay(6); //去抖
b, k. a5 X# ]& c, ^( l: m - if(KB2 == 0)
6 A9 I0 W: L+ i y - {( M$ [. W) X, k. e
- kb2_count++;
$ |- @" q5 ?, M0 Q. s - if(kb2_count == 1)
1 j6 j ^( q1 \0 I - {
D2 w! v, Q' g2 f9 m& {9 y0 P - key_value = 2;- Y& c5 v8 [, c2 e' n, K, C
- while(KB2 == GPIO_PIN_RESET); ; n; ]+ ?" F! [4 b& P* i3 o4 E
- }
3 r4 ?( p, T9 p V, P - }
3 m2 s+ i2 }; m B* V& L5 Y1 s" _ - }. h5 c# a5 h8 d' W5 Z; t" M- L3 a
- else ' `# W2 c, |1 _- t' i& e/ f8 q
- {0 D& Z: }/ }+ c2 S; ~: B; g, h
- kb2_count = 0; 9 p$ L1 V# w5 N
- }
$ F, g8 S8 t: d9 G. d X - 0 e/ b6 ?, V& |, {; _, \
- //key3
& m, `6 o7 K2 X. B. O - if(KB3 == 0)
. O+ w% [" l# Z6 h7 e - {
8 t) O* p" _" \9 ? - HAL_Delay(6); //去抖
6 P d5 I% W" m! P. z/ c8 G: t - if(KB3 == 0)
) _+ W& [7 z5 l! c# n9 i ? - {' p/ s1 n% j- H3 q3 I
- kb3_count++;* Q! @% C8 I- {+ J6 [0 W
- if(kb3_count == 1)
- f8 A- [4 c' q! X( F - {2 d2 ^! y; n3 w
- key_value = 3;
+ T; t6 D/ {9 U( @ - while(KB3 == GPIO_PIN_RESET);
' M2 Q: z1 d0 H$ ?! Y' q - }
3 U$ G2 Z) Z( R, o - }7 ?+ F: }! d6 Y6 H
- }
# z. f c+ W. t9 t" L - else 7 ]( [( ]6 T: ^; r) I
- { f( e) F N2 }' B8 m
- kb3_count = 0;
+ r1 n6 P+ q' S1 n/ l( ~" w - } * B- j# d# p, T4 m4 D* b3 W4 J3 C
- " C1 g8 x2 _% h' A2 L/ g
- //key46 |9 e I% ~, z* L$ J
- if(KB4 == 0)" w* Y0 S' V2 M
- {
7 V, L0 X# R0 L2 k7 ? - HAL_Delay(6); //去抖+ U1 r/ X+ D( l* I( ~; F l
- if(KB4 == 0)
2 I' {" M6 S! z$ `8 @$ i A - {
# O; U0 @: G z9 j& J - kb4_count++;& @& t5 E- ~7 p* J# O/ t( X
- if(kb4_count == 1)# M$ K+ u% H) U* Q( E: s
- {! [+ @0 U; C1 T6 I# Y3 O1 o ?
- key_value = 4;3 P5 Q7 M9 {1 t3 u, M0 {
- while(KB4 == GPIO_PIN_RESET);
2 t0 N3 j0 L" o8 ?; F) S; e - }
- r( h( P6 `# s7 }; V( X. ? - }
/ W6 T; n; K" N5 n, N0 j% @" g - }
: e( c8 j4 W4 w( w5 Z& `% l( j4 U! _ - else
/ o: |8 [, _4 p. O - {) g, l7 q/ \+ n) K# C# N0 c' i; p
- kb4_count = 0;
6 J: u2 H1 H6 Q$ R3 f* _ - } * m' k: @9 g3 |$ v A
-
+ ?7 a' H, T4 z. A - return key_value;
& |; |% z0 R: R) q% k! _ - }
复制代码 $ B C9 ~/ J/ M& ^* ^
, ^! N! t2 k/ a1 u. M1 g$ L8 o8 H" @4 P& ], R9 f; t
(3)添加LED模块相关文件
# f* a0 Y {1 K2 ]7 F" w2 j2 R新建文件并保存为led.h
* Q: l/ I" `3 R, Z- }
6 o8 J9 n0 Z% m+ |6 r! G+ |
$ S0 L# Z2 K) f) q+ Q/ C6 b
7 P d1 I5 C" u* k( o( R: r新建文件并保存为led.c
, }8 z" [# F3 `% @ l! ^3 b* ~, d2 v9 R& Q5 _; p L- e E
& V$ W5 c) }9 g! O1 c& U1 o( I, W* f& w0 \1 G+ s
将led.c文件加载到工程中去5 X, B" z/ F2 |3 n
* Q* z3 A3 Q4 {8 S5 ^; i+ @4 ]1 L
# \, f8 M; H& P3 h" a
3 f5 T3 b& V% Q1 g( y+ H* J! L
编写led.h文件,保存并编译
) p: H8 J' Z( x4 M
+ S$ s& F4 f- r; I! M
5 C4 o- M6 m8 z- W' t5 U9 `# w$ _/ O. C: e1 F/ K
编写led.c文件' T9 B1 e/ g9 @
y7 u, F* @# r9 P% u. v
O* s m9 M! Z
- a2 J, D$ x- Z0 R! |在main.c文件中不要忘记加上头文件
, m! z% _4 Z! S* f% R" l
0 l5 P. {# v; Y; I# n
0 v$ ^" u$ R* l- `; D9 s
7 I3 \2 l) z3 ?8 L
0 g- x) G1 a6 g9 O, e3 {
三、按照题目要求添加代码
* s+ p# K& T& v(1)按键函数Key_Proc()- m, K7 a0 u& @6 v) b" Y: {
3 O6 t5 v0 v6 c; l* j; A% v( Q0 N
1 `- l) w& ~% {/ |, J" z `: Y# i0 u& M. w
- //Key processing function- i) P) Z7 V& e
- void Key_Proc(void)
" r7 u1 e9 M F5 w( { - {
/ ]8 G) y) ^1 z* q: ? - char cur_key = 0;$ x( g9 q. }+ M! p) S$ O
- - i3 T- X7 @3 V; Z! l, L" _0 B% F
- cur_key = Key_Scan();
( Q! @* x9 |/ ?3 d3 K -
# i! G) g0 J+ s+ u" e - switch(cur_key)& s; j6 e+ ?8 T k
- {
/ b ]0 h$ _) h( }1 F8 s - case 1:! y. F6 m3 b3 v
- Show_Flag++;
4 l! i3 x' i% ~2 ^; g8 H. P' U7 _ - if(Show_Flag == 3)# F- q' ^( E1 Q4 [! U5 C
- Show_Flag = 1;3 {7 @/ S- ]4 F D8 S4 ]- Y
- break;
0 o$ p8 Z p. [ - case 2:/ N: ~3 T7 Y; P. r; {6 ]7 X2 R
- if(Show_Flag == 2)
8 Y0 [# G' G! {2 Z3 {1 E9 V - {4 _, y! x8 u: y5 }' q
- CNBR_Price += 0.5f;
/ u' ^ [: A$ ?7 D - VNBR_Price += 0.5f;
5 R3 B U" Z, N6 r3 a5 d - }0 _: @& i7 a& |
- break;8 w, {3 |; b* @( C/ C6 y. x! V- V7 X
- case 3:
: n7 K) y: D/ D3 L7 t3 t - if(Show_Flag == 2)# {: h, D4 K% s+ J7 Y
- {
5 r `' R$ l2 j% e) Y - CNBR_Price -= 0.5f;
7 k8 \1 D+ R5 E# W8 J3 I - VNBR_Price -= 0.5f;: |' y) s# S! z Q. Q( t) a# M
- if(CNBR_Price < 0)
# v* V: X" i, x4 X- D8 U! U - CNBR_Price = 0.0f;
9 ], H* L- M7 T' P - if(VNBR_Price < 0), _/ {& x/ ]5 A2 S. b$ n
- VNBR_Price = 0.0f; 0 s2 V- I1 Z5 L
- }
6 }0 _' ?* H* f3 s; l - break;
, ? r: F$ A+ a. @' y - case 4:- k7 Z W/ q- z, D
- break;
5 g) o- `5 I3 g' A" G2 r - default:8 B% C. N+ T2 l" S( F9 y% U
- ;
+ }# F) k( K! H& K3 L' u- D- ?: X - }) [' t; J: `* A# ^0 s! h& G
- }
复制代码 & q4 `; }/ y0 S5 S' g
此函数中用到的参数声明
' l b" A2 a7 w+ P/ v# U
) F/ a9 L: m4 ?8 _! J' }
7 v [0 V# p e" ~: x( F8 @# b4 `7 |4 M8 [% k- V% y* T5 C* u
(2)LED灯显示函数
& d0 k4 S6 a/ }' N# M4 x! t& O# i: ~( [: k1 K
$ t, P1 E0 Z5 t. S+ Q
0 m b7 s7 n2 ^& Q
! z- o q7 A: U0 y, j8 O0 v
c1 v- r2 Q% a" F
定义变量和声明函数/ X' c6 U3 A6 @2 D+ {
5 v# y5 ^, t1 M1 W u1 [
; R/ t) X( b, A0 T' ?
- q% ?7 S( ^" m 编写LED_Proc函数6 Z% o9 S3 N! [9 I
/ p9 J$ Z1 V8 I4 t+ k
. P& W* \" S. o" m
% }. m6 H( O* p6 l( y6 b' }- L(3)LCD屏幕显示函数
$ W0 F" M8 W' X9 i首先要更改lcd.c文件中的三个函数,避免引脚与LED引脚产生冲突
% |0 ]& u, Z; ]% v' L+ W! o7 j# }* p
0 D4 @( b/ v ]+ K( Q; ]2 q3 P4 k& {$ i
9 d9 W* R' t8 D; I4 D
- c& S @' [4 [
* h [4 ^: ]2 P% f& }: `
9 {9 Y3 ^( D" N3 g
. I) K& m$ }& }5 i) n7 l' m! q LCD屏幕需要实现的功能; O( Q( H2 J/ O2 ?8 }6 C, v* T. [
$ K9 ? s- s/ k7 P) E* i' t
0 S4 G0 t/ x9 G" P
8 H8 j8 |2 r& e" q
' M* G" G+ w) w9 C
& F* r; L: y1 a8 T" M9 [# i
% {. l U6 O) s& L3 \
* z" {* Q$ n; q5 {# l6 X$ e4 b 屏幕显示时用到的参数6 W# q1 e0 {) X. @
+ T/ V$ J$ s; f' b; Y6 Y) ?4 \" c
+ y6 L; d& I; S: Z5 b
( a7 b* t+ C# b! }: A
编写LCD_Proc函数; J. S7 J5 ~; h. E2 ]9 _
% c. y0 x4 Y3 m7 s$ @9 Y% ~
1 j0 W/ C2 d. D- C1 j( ^% ~
在屏幕显示的时候用到的变量要初始化一下,因此单独写了一个变量初始化的函数
' R/ z: s2 }# F9 t% B( T) f! A, F$ [' P) Y. j; e1 f" s
6 S4 ]- u% C" M" p8 M$ ^6 w- W9 U3 n) A. R+ K- r
这里用到了sprintf函数,因此要添加上头文件#include "stdio.h") p8 D: k4 ?) o
9 f% L* g* Q* L, [1 k5 `& o- l+ J
*****解释一下sprintf函数的用法' T- P$ L5 l4 e
( R* L2 z" n0 K- m) W/ O
sprintf函数的原形:int sprintf( char *buffer, const char *format [, argument,...] );& f1 U) b* p( x) p1 z8 x
) q# u }( q4 X. T8 K
*前两个参数固定,可选参数可以是任意个。buffer是字符数组名;format是格式化字符串: Z" y, P2 o P; `
* h- W4 b8 [3 X- n/ W
*sprintf的作用是将一个格式化的字符串输出到一个目的字符串中; ?: @7 ]) r! s9 a# F$ _' J3 |
: X- Q0 T9 T/ Y/ l, G6 q1 }! Q( @
*例子:sprintf(s, "%d", 1234); //产生"1234"% B( E! l2 p0 i) d3 ^3 q6 j8 q
) L' y5 t' { P W: N
: V4 }) F j. B* J& S; Z(4)主函数编写main.c
5 [8 {1 h) e* u: a0 ]3 m* ~% O4 x) w/ h a
; I" M$ Q" J4 [1 F# ~1 A
/ e8 c! k3 t7 m- I& x! S0 q- l) R4 j% M# y- a7 O* u4 x! x- Y
四、实验结果2 X+ N$ P u3 Y
/ n. v7 {8 {, D/ C
. h& N; \4 q& ^ Y/ g, o
6 I! V) k' x8 x$ X/ K7 p, K
0 ~) f* V* \% ^& n1 j6 F5 n! {& O0 Y; Y
5 ?3 q, Z' ]; e6 ]' b
6 C4 D1 A& Q/ ^ C————————————————/ I* @7 K8 u D# o; S
版权声明:想要优秀点儿
7 x& |/ Z; t- O2 x' n. r" T7 ~0 U6 K
6 N) x5 t$ a# P" u+ D O* h/ U
0 n) ^+ w3 k2 |5 q+ T) i4 A$ I |