本帖最后由 slotg 于 2019-1-29 22:32 编辑
7 A @0 d6 u& g t& ?
0 E1 v- w, a# U T) R在 STM8-SO8-DISCO 板上的使用者 LED 对应 STM8S001J3 器件的安排是在 PA3 高电位输出点亮,而使用者按键是在 PC3 电路上有安排下拉电阻。而我在面包板上的接法 LED 也是在 PA3 高电位点亮,使用者按键也是在 PC3,不过我不接下拉电阻而是配置 PC3 有上拉电阻。* T0 A1 F" ^. v& f2 Q
& t; a2 @. m* V& j; _' |& \
) \) B1 [* I6 d! L" ~) p$ K
# }! n4 N0 W7 y& d5 _& ^, j在上一个 LAB 当中使用到了 SWIM 这根管脚,因此程序的开始做了一些必要的设定与延迟,不过目前所要实现的功能都不使用 pin8 这根管脚,所以程序中先移除这部份的代码。8 c2 x& P1 T4 N# _
8 K5 X( Y' W9 w0 Y! ^/ k' \(一)
# y1 L& e b9 G; J第一个程序先来实现一个最简单的 GPIO 输入输出功能,程序读取 PC3 按键状态并直接输出到 PA5 上的 LED。
5 N" R/ t1 b* w) T4 Y9 l3 l g0 ~% z7 B
管脚定义:
# L- |- @6 g' W0 \8 e/ X9 O- #define LED_GPIO_PORT (GPIOA)
1 M @' p; h1 [& h( |$ n - #define LED_GPIO_PINS (GPIO_PIN_3)7 V2 s0 r' J. P3 k( y# ~" N7 g3 h
+ f1 |$ z: {& b! @; V- #define KEY_GPIO_PORT (GPIOC)* I0 b$ h# W4 h6 K, n
- #define KEY_GPIO_PINS (GPIO_PIN_3)% Q! ?, t$ o& j: P; Q8 @. R+ ]
复制代码 4 t N2 @5 r% P* X3 A2 v! b
main 回圈:) i: @' K9 Z* x: v+ f
- void main(void)
' [& W8 _ A$ w$ _ - {0 d6 E1 g- q9 _4 K6 Y {5 l, w
- GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST);7 f7 m# X% R0 E' W/ n
- GPIO_Init(KEY_GPIO_PORT, KEY_GPIO_PINS, GPIO_MODE_IN_PU_NO_IT);0 h" Y( _ Y$ M% V' E7 ~ }" \# n
- % _0 X6 \2 P) }# O" J+ Z
- while (1)
% h0 [4 r3 C0 j# g3 q( {) z6 X - {+ j1 Y; h% _$ _) n$ C. x) {
- if(GPIO_ReadInputPin(KEY_GPIO_PORT, KEY_GPIO_PINS))
9 E- J) t4 d0 C; S( f3 l! [ - {
9 @- m& `" ^4 h5 n! b - GPIO_WriteHigh(LED_GPIO_PORT, LED_GPIO_PINS);- h" w- f- t7 f- a+ t0 q
- }4 d9 C, s( u& T- p9 d0 g4 E$ r
- else
$ N P2 S }& n' _: v - {$ f3 Z2 K, T! u: l7 s0 E1 q7 b
- GPIO_WriteLow(LED_GPIO_PORT, LED_GPIO_PINS);
0 H& M# }# ]) n+ h c8 A - }- C( r0 E/ Q' y% F- T) a0 a
- }
- _5 T) H4 A( n+ Y" e5 j - }" z) ^' ]3 ?( j9 G' c5 j' `
复制代码
, H, n' w b0 q" g; Y$ a+ C按键放开时由于有上拉电阻所以输入状态为 1,直接输出给 LED 因此 LED 是亮起的状态,按键按下时 LED 熄灭。
8 G/ J9 l& [+ T) p+ {+ x% r" n- `- s; y: H: ? l' M
源代码:9 m9 I- o& s1 W
B03.rar
(715.63 KB, 下载次数: 6)
|