学习目的:本设计是基于STM32F103C8T6单片机完成入门点灯设计。" Z- W, a. ~3 B# q* S" D- y+ t
; Z) C' N8 m# d' E' Z4 s" L6 m; d% o+ Z
根据STM32F103C8T6的原理图,可知LED2与CPU的PC13相连,当PC13=1(高电平)时,LED2呈熄灭状态;当PC13=0(低电平)时,LED2呈点亮状态。( J4 v1 Y$ L' U$ q, i- G: P2 T, R' m
7 F0 t8 k+ {& s E# W3 K( s, V" e
\2 J2 w% e7 \7 i
u# v9 v) ?3 t参考代码如下:
/ K3 j# k2 V% L) z4 `- <font face="微软雅黑" size="3">//main.c
3 W7 o, {) I) j' X
* y+ s+ D! I9 f' k3 F5 Y- #include "stm32f10x.h"
" P) I$ w3 P/ J3 I8 U$ }" J
5 A9 g& K# z4 I- #include "led.h"
+ U9 V+ k. I J: Q - , P' ?# Z4 N4 N& U/ K
- #include "delay.h"
9 C$ c& q* f9 v& |" {8 N, P - ' V: w# p! \3 s( o' f% @4 f
- int main(void)
% c$ R" W) I8 `5 P9 X/ c
6 |$ U" I g5 k {+ E; v) X- {
( l! D2 c& R6 P6 I, p8 J
$ }& @1 e8 k6 ? B4 ~- ?+ d- LED_Init(); P7 F# y6 z' A
- 3 x, I! L I$ m x
- while(1)
+ H& X) a6 N" v9 Y7 M; |( I
) N$ V5 T0 b) i/ A- {9 e, F8 g# r7 z# y4 |
# [2 F$ |/ [- ?) N3 _2 {2 f; _- GPIO_ResetBits(GPIOC,GPIO_Pin_13);+ g4 Q. P/ Y6 D D* B3 Q
- - h D+ d$ p, X0 X! A
- delay(200);* ~% O B ~; t0 B
- 9 l; t8 b" D3 K$ f9 r
- GPIO_SetBits(GPIOC,GPIO_Pin_13);
" Z I& l4 ^' m6 G+ a' m - 7 u; @' u4 G7 w. a
- delay(200);
1 N/ m w% K1 n; i - / M; h1 H; [7 [# A- l( q1 S; h J
- }
. v& k5 x* ?- q6 I
9 Y$ Z6 T7 w- @) n; e- }</font>
复制代码
* d r+ n$ Z d! u1 u2 A/ N/ m3 q+ j
8 l4 x# C) e3 f+ U- <font face="微软雅黑" size="3">//led.c3 B* S# x4 D2 F( G- |9 p P
: v) }! V4 F/ b3 F* @; M* E& R- #include "stm32f10x_rcc.h"
! E. Q8 c' [2 s# D5 h+ _; X
( L5 T( G" K4 [8 d, S. B- #include "stm32f10x_gpio.h"9 B0 x/ i2 d. n' H, g' R
- - d# L ]3 ~( w+ L
- void LED_Init(void)
& E* c4 u9 U. R( Z' a C( J
. X* Q& Q5 f$ ?' k% r- {
, q2 |. q$ C% y4 w" N: p/ ]( T - / t6 L/ x6 ^0 T( i0 N
- GPIO_InitTypeDef GPIO_InitStruct;
- e m* b3 E8 a - 6 f0 u8 ~+ b$ Y- l4 b4 _
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);5 q- p7 N2 H% h; p; K
- * N5 I4 k. u# _" h7 u7 G
- GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;! v, T6 [& ^' Y2 k) X
- 1 ?4 j1 @6 C0 {7 g2 o
- GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13;
3 C! ]; I1 L9 D& r* K - * \+ X+ |8 T- z5 V: ^& k. R4 g
- GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;3 n. i8 q' C& c& s8 l8 C
- 8 f; ?3 N2 e' r( z
- GPIO_Init(GPIOC,&GPIO_InitStruct);6 b! |2 R/ u3 f) f1 k
, I0 y X i J- GPIO_SetBits(GPIOC,GPIO_Pin_13);2 s# w0 p$ M# X1 Y$ x% f5 }0 S
$ [& c8 a* g, y; @2 K4 W) t- }</font>
复制代码 3 y' x1 H+ z# S- f% @
1 o# u$ f& K0 C% i8 Y! T- <font face="微软雅黑" size="3">//led.h
9 ~ F; H& D. w2 K" a2 w9 x
, I- v; K" |% ]8 b& K B- #ifndef _LED_H+ N* m6 H) L" r% \+ h# M
# x* p+ x1 R+ l+ @+ ]9 {) ~3 D/ J- #define _LED_H
; t2 n, y! O7 B3 q- O6 P$ C
& @- E0 a% F# F- void LED_Init(void);
: J/ G& L% |5 `; Y; k; n- |) m
& h7 Z3 b T% e6 T" H- #endif</font>
复制代码 6 l* O$ h2 A+ @1 r
, A ?6 y$ X3 U0 ?, q, H+ o) M2 {- <font face="微软雅黑" size="3">//delay.c" b8 [ j2 q& R3 h
) H, Q9 n" M4 i3 a# l% E7 I( h- #include "stdint.h"
4 }2 F$ Q7 _* R: g2 }& S7 `
8 K" s0 I3 L7 e2 D- void delay(uint16_t timers)! ~3 \4 @! p' N" r8 i0 C
# V. M+ g _, O9 z4 x& @0 a/ h! j8 D- {
; ~9 P3 ?4 z+ U+ I$ q1 W
' |: T9 E6 k* K- uint16_t i,j;
5 H4 r$ f% X* Q8 l9 D. B+ F - 9 A& P. W/ a" d. I& H: W
- for(i=0;i<timers ;i++)
$ \+ p8 Z; c6 b+ X
. N* @8 S0 U6 l7 J7 s# L: w9 x9 i/ ~8 _- {
. @) v5 q* ]4 ~) n, @
, J- N6 q% ?* U+ t6 ~* Q% a! m* |2 K- for(j=0;j<0xffff;j++)6 u( _: ?5 O: y! x
: P) {4 H- e( h, p- {}
! `# G2 ]9 K! [5 J5 U8 Y
, _3 U, |! C1 V2 t, A- }
, d# S- ?/ Y6 [3 y9 F - 6 O6 k; _+ ~6 L* l' v- i
- }</font>
复制代码 0 k, U, P' ~! J! A8 V7 M, ~
' {- x/ O/ x2 W+ M$ K3 _$ J9 x- <font face="微软雅黑" size="3">//delay.h' Z) S$ v- a& e, u: F. ?) } ^% _
# k0 U8 `6 p l! g' m" i( G- #ifndef _DELAY_H
& h: `+ S) k X: i) A; K
) S ?" v' Q* x- #define _DELAY_H
( x9 _/ a- D; ^' O$ S
+ S2 C I( v1 x& n) o" R1 w- #include "stdint.h"
! c2 u2 ]" g. f* g; d
( K: m4 W- q, Y$ `. [- s7 N r ]- void delay(uint16_t timers);
) O4 n/ l% ^3 n$ G4 D) { - $ }# _ ]! A; J; c
- #endif</font>
复制代码
+ |" U( j5 w, N& d
. _9 ~" W# |' p6 q! K6 X* z5 | |