学习目的:本设计是基于STM32F103C8T6单片机完成入门点灯设计。2 } Y) y- P) E$ p& h6 P
3 Y7 X+ ?/ c% J4 |6 I9 [ i* _
+ K) g. q4 l% y根据STM32F103C8T6的原理图,可知LED2与CPU的PC13相连,当PC13=1(高电平)时,LED2呈熄灭状态;当PC13=0(低电平)时,LED2呈点亮状态。
2 F, ]5 J, f0 R# `
+ [& q9 j# h0 I3 h1 u
" w# f: c0 f8 M9 t
$ r1 i; }& W B( V- V! T5 c参考代码如下:
, U6 N4 \3 M9 [: C3 O9 X9 N- <font face="微软雅黑" size="3">//main.c
0 E" e) k$ p/ i- d - $ I* L+ \9 ?) l, ~7 t9 b) r
- #include "stm32f10x.h"
1 o( s+ M2 m0 E7 D" Q* c& x! M
8 N) L/ _6 O; l/ Z$ w2 R; {6 W+ w% _- #include "led.h"0 Y$ Z7 d- I" g& O: D2 O
- & U+ p. \% ]7 d# ?6 X) M
- #include "delay.h"
) e% `4 a6 m# A* y) S
- Z1 B1 Z- e% x$ X- int main(void)
& b0 I9 y, N* x) R8 F; @ - 6 p I% l {4 }% ]% s* T5 L& z
- {3 Y5 w( i" l5 P& I4 a7 u1 [
1 d( W+ d( j9 ?; _) M. |* }5 F- LED_Init();
6 |7 I' T" ~" Q" H - / e. Y. ^, Y9 [: f; D4 B4 n, W
- while(1)/ i' c6 t4 v) i' x
- ( T, S( V% E4 y; g' j
- {
& b& ?3 Z1 ?' f8 _& d - $ j6 ]# V* i+ c- A: P) P; @
- GPIO_ResetBits(GPIOC,GPIO_Pin_13);
: L8 n$ h: K3 J T - . [* w8 @4 O4 Q; I
- delay(200);) p& |0 M& f% f' W
- ; q9 y! `' Y5 v8 p! P" H' r! O4 V
- GPIO_SetBits(GPIOC,GPIO_Pin_13);% R$ v3 X4 W0 q. b
- 2 x; P+ R6 P+ K
- delay(200);
) v" O! S& f* m$ G$ X0 n3 M - ! k" L Z6 z" c0 G& n" E
- }+ v9 K& C, i- r" z- _
- 1 s2 I" l9 O5 ]) w
- }</font>
复制代码 / M! S! W9 m1 Z3 O
6 v' E( c$ j4 ~* M% @
- <font face="微软雅黑" size="3">//led.c2 p& f" |/ _4 y: B' \1 [0 c8 ^- @
+ F! y/ Y% y, k* l- i C' C- #include "stm32f10x_rcc.h"3 t5 f" L# M# P5 M& P% p. ]
- - r L% M) f# b! G" h" ^
- #include "stm32f10x_gpio.h"
3 [* @, G# p3 ]9 H1 i# J- E
/ h1 L3 n0 H( k, Q/ O- void LED_Init(void)
4 B, X2 e+ }! N ]; l - ! X% ^7 w% u5 P- l" `1 y2 Q
- {3 P) }# N( s& ^5 O
# s1 V7 f* H3 b0 Y/ d+ [; B- GPIO_InitTypeDef GPIO_InitStruct;
4 T+ O8 E3 T- U: X - + H/ G' N0 E t
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
/ H2 b: M; w A - 6 \* q+ o2 |, e- N9 m: S9 r
- GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;9 f K) P! d) c
8 ? \ k6 x6 k1 @' p- GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13;6 W+ q. i4 V" B$ |4 l
+ Z5 _' w& ~6 ^; }- T- GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
" x$ j! L4 \2 T+ O
( \& X" ?: ^% r5 c1 ]7 _1 l% M: N- GPIO_Init(GPIOC,&GPIO_InitStruct);2 i3 A) h5 } Y, @- B4 p
* _3 R+ K. w2 C8 _; E0 E- GPIO_SetBits(GPIOC,GPIO_Pin_13);% {% f% c, h" [, C' E4 I% O+ @9 Z1 Q" e
- ; V- A) Q# D5 F) c1 ^
- }</font>
复制代码 9 Q, k& n0 D" }6 K( m$ \
! b2 A1 j3 j! o0 I! K: z, X- <font face="微软雅黑" size="3">//led.h8 S" e2 }2 ~. ~, Z- s2 ~
- 5 H. x" N% j- }; l( Q' w5 X& u
- #ifndef _LED_H
$ ]' P& `) g7 H - , D1 d5 G+ R- s
- #define _LED_H
; _& [( k( M4 n! M5 @3 h' K - * S: z ]- l9 z' C( \2 o1 X
- void LED_Init(void);( t+ e! o2 A) }8 T0 X' D
- 1 a4 t; k# K$ r0 {. }9 L8 n
- #endif</font>
复制代码
- A$ H) F2 J2 X% _5 S M% B r' s3 ?6 M1 S# p
- <font face="微软雅黑" size="3">//delay.c
4 i7 A$ e# R. y4 X) [7 T
, X& P9 v" t9 a) X1 h$ l# T. b7 `- #include "stdint.h"7 I. w; m, O& a' V5 _9 M
- ' S; Q+ C/ j) s
- void delay(uint16_t timers)
- j$ J' C" }3 E6 r+ S
, ]% \/ @' X% J3 N m" H- {4 ]% g. z% @: N" V3 W
- # f1 h4 C/ ^. z6 ~( H
- uint16_t i,j;/ Y* {5 n j% ?
* W% I2 H) ^: c% M6 [- for(i=0;i<timers ;i++)
, U4 k( B5 m C% F; r+ p - L' d$ l/ p7 l' f F
- {! F9 p$ F H* f0 y$ R q6 b
- % a- j! E) b# x. Y& V. x- P
- for(j=0;j<0xffff;j++)
Q& V! \! p# P8 V! Y
; c" J1 s, F& R% X- X( ? K- {}& ?) H( E9 r2 D, @& u2 M
- ( A, O! `4 y, U L! b1 B
- }
Q) G0 l2 q! Z( T# ^
& n2 U0 g3 K5 t# o' o' s4 _% J- }</font>
复制代码 ) T3 t6 v, Z' A% X1 e- ~
! M& _8 Y7 @$ W) e" F
- <font face="微软雅黑" size="3">//delay.h
5 M+ A ^, Y. ~ - , i) Y- Z. ?) k2 [- O
- #ifndef _DELAY_H
" Q; [2 S8 z' G- H) X - ! M* L) \, [( ~! t9 ^
- #define _DELAY_H2 A, y. T) M# O
- " D h' ?' w8 O- \6 n
- #include "stdint.h": s2 w1 J2 [4 S
y8 k4 a( [# _; M9 V$ \( A- void delay(uint16_t timers);
6 L, r* [7 [8 z" Z) d. _! n0 ~! B! S
: d, c) m& w1 p e- #endif</font>
复制代码 ' {, |/ c- {9 ~' N6 ?0 B8 K, b
( n" a" P9 K5 _! r! C9 o |