学习目的:本设计是基于STM32F103C8T6单片机完成入门点灯设计。
6 }; U/ F* Z% w
/ X+ W# G$ V8 _1 N5 L0 Y. p, L2 i+ e* d, M; D6 m
根据STM32F103C8T6的原理图,可知LED2与CPU的PC13相连,当PC13=1(高电平)时,LED2呈熄灭状态;当PC13=0(低电平)时,LED2呈点亮状态。
& N* N' o; c! ~! ^. k( ]
2 O w) `% D: T0 P" ~
8 F% J) B7 t( l( e' R# W8 H
1 \/ k7 ?% K- g% I- {7 y& g
参考代码如下:$ Z/ U% ^" P. u& L9 N# r/ L
- <font face="微软雅黑" size="3">//main.c
4 I3 o& ~0 L& @3 }
1 v1 R$ m; z( O1 ^) a8 f# B- #include "stm32f10x.h"
" C3 V& R& e9 r8 U8 [, l" e5 b/ X
: [! c* ?; m. h% n" ?% u- #include "led.h"0 Y) z! m4 ^$ v# u, _
- s. ^3 y+ |0 W1 k# z8 D* M- #include "delay.h"
6 A9 |" [* w9 A5 s: s - v+ x7 {2 u" x) ~5 W; i
- int main(void)9 p2 g% q% |% O a5 m
- . q3 i, e5 M7 Z7 A# w; u. {' K
- {
) U7 u$ r: E; ^+ |6 }" M
M1 n0 i& v% p% s- LED_Init();+ W/ \/ u- m) G2 U
+ `' E+ v' J2 m; Y( w- while(1)3 a. Q) a- [+ F+ ~( A( v
- r9 X5 P X+ c( c9 j- {
9 z( s* v3 P) b5 e1 w& d3 X* Z
- ?, D \1 ]0 Q! K- GPIO_ResetBits(GPIOC,GPIO_Pin_13);+ ]8 a) [" m! c$ u, o, `. g
* ^9 ^, x/ u: i _! s0 D- delay(200);
. U" I) H$ j! {" t* _+ p - 6 {$ {4 q7 G) l$ M/ C* L |
- GPIO_SetBits(GPIOC,GPIO_Pin_13);9 }& K$ M2 ~. b: y
5 n5 X x, i$ x; a# d" y- delay(200);/ m. D- D. X' f% K0 Q
, _/ \/ A3 X8 |! h$ k- }
8 z# H% ~1 y U: F
; e- i l+ n6 G% }( ]4 H3 f/ ^6 U7 [- }</font>
复制代码
# {9 X6 I" T7 z9 v$ k. H3 n
, Q+ Z' @% Z; H K4 I- <font face="微软雅黑" size="3">//led.c, v' k6 r" X0 S* c0 ?$ L
- / O( |/ z9 v2 t
- #include "stm32f10x_rcc.h"1 F1 i6 [. _3 U/ [" j
1 r) }1 m& f2 ?$ Y6 y- #include "stm32f10x_gpio.h"0 e. A6 Q2 }1 b" o
- 3 D% i/ X1 g. s) B
- void LED_Init(void)- Z7 V6 I' I2 b- |% C. R$ G
- / u* ?) P9 f% d2 o8 v# k$ l) S
- {
# f7 k% C5 @, [ i: a - % E/ X& i7 I& r H
- GPIO_InitTypeDef GPIO_InitStruct;
! O R$ l8 I9 u+ t - $ O" `1 x# w+ T9 _; J. `, A/ Z
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);; w* l5 c1 Z5 _3 P7 T) {
- : m+ _1 R9 X/ v
- GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
7 q g7 C1 f1 U/ x - - x `6 O% H0 v- y& x
- GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13;3 ` D! o- I9 E9 \ @6 z; E6 z
6 |2 S2 L. m7 V ]. F( H1 z$ U- GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
5 l" i: R2 M4 k$ X8 d! {
@$ j. K: ^7 C/ b1 Y- GPIO_Init(GPIOC,&GPIO_InitStruct);$ d5 c' M7 [* ]1 I/ U& A' t) F
- * T! k) a2 G, H, n+ g
- GPIO_SetBits(GPIOC,GPIO_Pin_13);
+ s$ d( [( }5 l - , n- P: }1 V! x% M, @) D# ?4 Q
- }</font>
复制代码
+ l: a6 i& d E2 e2 ~% c! W) o0 {4 C4 M
- <font face="微软雅黑" size="3">//led.h
& i% V1 _- v1 J+ H
* @- Q b" I7 a2 C& g3 D, U& Y/ p- #ifndef _LED_H. s& I5 p, @/ Y+ ]* k1 f
- 4 m: G! z: x8 S% A
- #define _LED_H# x' R I0 @4 l& ^7 Z; N
- - u: Q+ K5 o* K- |7 \2 u
- void LED_Init(void); T- u6 M" Z& P/ a& W/ m+ d
- 9 Z6 j2 ^' F: ]; I
- #endif</font>
复制代码 + g* Q9 }0 r# `8 C
' k, A) {# o' F }6 M
- <font face="微软雅黑" size="3">//delay.c
6 [. c1 _0 R J - * C9 q9 q6 c$ y1 \
- #include "stdint.h"
/ I2 H9 O$ N1 V+ a - " y$ u8 h+ e$ E q/ l" D
- void delay(uint16_t timers)
1 b' Q% V$ B" W5 U& \9 [/ e - 0 y* J) w' v7 U7 g0 {; u& B
- {4 t, N' B7 ` h1 N% ~
- 9 f/ X' V5 o4 w9 A/ X
- uint16_t i,j;9 V5 z5 T3 U, y1 z; p/ ?1 T, M
- ) u, f0 K5 L$ W- z' C1 b
- for(i=0;i<timers ;i++)
' _$ k# w& B1 \9 p
+ v" S! Y, x" f* A; U3 G- {' h8 Y: X( T' q5 q( t9 r6 |
- / @1 Q) X9 p+ q! q7 @! \5 q3 l) d
- for(j=0;j<0xffff;j++)
8 @- g' A& [! j1 f( ]
" z+ M( b5 p, p0 j+ u- {}+ u. M! }* I1 ]: Y: d
3 U9 m- z+ ]) U5 F7 e" h1 E- }
) y v- M) r. z+ s* w1 Q6 y6 K - . _' ]4 y5 h. p. s* H+ _$ [
- }</font>
复制代码 ; |- B& d% e. K" u. ^8 D- T
4 r$ q7 t# W. m3 t' L. H# ? {- <font face="微软雅黑" size="3">//delay.h/ [! W a+ Q8 W4 j* r" l( u7 U4 J
- / i$ U2 Z( ~+ d
- #ifndef _DELAY_H
( L2 \9 @1 g% u T/ i, `: s - % r% T1 e; U# c2 Y: c+ G
- #define _DELAY_H
* e- m, a+ p7 S t& U3 E! X) n! M
8 |, y6 q( e* h1 Q- #include "stdint.h"/ s+ l B; W7 M/ [3 z
- 6 B, S3 [ Q+ J9 ^4 g
- void delay(uint16_t timers);/ h# g5 q$ i9 U4 e$ d. @! k8 n
- / ~: k( ]# x$ j4 s
- #endif</font>
复制代码 4 R2 |4 P0 z0 j
% x# C i0 \) L$ d3 `7 q) I6 i8 ]
|