学习目的:本设计是基于STM32F103C8T6单片机完成入门点灯设计。
- o) x. L* }+ P. H4 ^1 C% J; d2 t
- M9 l/ R( a. c/ k) k5 F8 d
' Q& R) f# D4 S根据STM32F103C8T6的原理图,可知LED2与CPU的PC13相连,当PC13=1(高电平)时,LED2呈熄灭状态;当PC13=0(低电平)时,LED2呈点亮状态。6 ?4 I8 v2 P& e9 J4 U' m" n
$ N( m1 ^. t- L& g$ K* A7 y
' G t" s- z0 i6 t! \, c
4 x& k1 x7 P7 g2 v/ r参考代码如下:1 M6 V- d5 [$ I
- <font face="微软雅黑" size="3">//main.c
7 s* Z6 d: K4 ~- Q* X+ |) o
: P% P8 \( J3 c0 {- #include "stm32f10x.h"
9 C) X: C) R% M! W' I' A/ f$ B - 8 i) P B5 J9 p. i
- #include "led.h"
9 ^# p" @0 v! K - ; F* d0 Q. A. i8 t
- #include "delay.h". G# g; n& x) [6 e8 s! T7 [1 W
1 j: t+ h& j- \- int main(void)
$ o# W9 p* a% R4 ?0 o' z - * t0 G0 r* s5 S; ~# c6 W
- {4 f) x8 J: T8 I' _; o- e
( X. h$ K) k' @6 w1 c3 i4 U0 K- LED_Init();1 w! ]8 \. U0 o: h6 P/ L, b$ v, X. Y
- + m0 K* X* f$ J! ^" b) l- I
- while(1)
; k- `+ f; p, z+ L/ j - / g5 [0 o% l; ?; { o
- { A5 {% w: o2 n; g$ G" f' ?
- % r$ c7 R: A3 c! K
- GPIO_ResetBits(GPIOC,GPIO_Pin_13);5 ^2 A5 u0 b( s: A( Q y
- 5 P$ n' Q: a: p. m; ?' ?$ x! N
- delay(200);; }$ I6 X6 [; M6 w8 ^1 I' R- Q) c0 T
- 6 Y/ n2 h7 n/ Z* m
- GPIO_SetBits(GPIOC,GPIO_Pin_13);4 _8 e5 R8 ?! a" ? Y: ^0 ?
- * W( `9 l8 R: b9 T8 v
- delay(200);
5 R9 {' U. J2 A! [: V e, e- T
! s+ g$ L B9 ?" }# y% o8 A `- S! N- }% b/ E* q1 B1 m; M9 L
- * X, d. X+ d' M
- }</font>
复制代码 4 H4 A* G" Z3 [" f. ~$ V+ @
$ g5 ~$ s* h, s5 X+ E6 @1 b
- <font face="微软雅黑" size="3">//led.c
7 Y7 [8 x$ s0 a: B* I% \* M+ n$ L - + g% H' Y8 Q+ v( K# o( m) @
- #include "stm32f10x_rcc.h"" I& y* _ u: [
- 8 _) m4 D9 g$ C1 j& Q$ Z3 X/ W0 |
- #include "stm32f10x_gpio.h"* G4 i; C& B& z6 P- h* K4 h
, J6 w- r- s+ k+ X. F( M( M- void LED_Init(void): `) ^$ Z2 M7 t. W! V# Q
- 0 z6 v9 ^9 h, `' h0 u- f
- {/ u. h6 y* M9 ]) {! s4 e: L8 z* P4 P2 _
- ; x: M7 K9 c' w- q6 Y5 D3 }
- GPIO_InitTypeDef GPIO_InitStruct;( d. B+ D/ x/ N* ?: J( ? Z
- ! D$ F* I4 D5 y% I. P: t! g- G
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);8 l$ a# m1 i: q J9 @
! v4 F+ i2 ?% d- GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;: H8 y2 k: v& N3 G5 ?
- ( r, v |7 D. Z9 z
- GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13;
' W% M5 u% E5 q- A( Y5 f( v
) j% h8 V Q7 U% Z; R. j- GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
2 F5 _# E, [# O# R9 `- W - / M$ M; V: b+ `9 R, G
- GPIO_Init(GPIOC,&GPIO_InitStruct);
: @9 b$ D! q0 r+ p$ R) w - }9 ?0 m5 X5 h9 Z) d$ U
- GPIO_SetBits(GPIOC,GPIO_Pin_13);
/ c" d. @1 E& l" Z3 j - * s/ ?* }9 c, ?: y {8 @
- }</font>
复制代码
. L# U4 U% e0 D4 _% @3 H/ s! w! ~
, G+ D8 Y+ G1 a6 p- <font face="微软雅黑" size="3">//led.h3 ^2 d6 ]. r$ `3 {
5 y+ p8 v: G- P- h# N# e7 q& _+ K% p- #ifndef _LED_H
- } p, D8 x& Z: H+ G - 9 U \: }$ z* x2 C3 _6 M1 g
- #define _LED_H* f3 g/ y; G& A* G. d2 i* W4 F
6 b, Q/ C3 h; E9 }. V- void LED_Init(void);
. r" z; t" Y& z7 N' c- l9 w. u - ) r$ j4 M* i4 a( [
- #endif</font>
复制代码 4 h4 O2 |! h& g) v% o. n5 X
% F$ n: G; e/ L+ S8 W! L& \- <font face="微软雅黑" size="3">//delay.c
- Z2 J% v+ f# U# U$ a' ` - ( z7 v- U& {2 \/ b1 W
- #include "stdint.h") X$ N& h& H$ l. c3 ^2 c! s: m
- 2 z7 P- O/ j$ d8 t" [# H Y0 }
- void delay(uint16_t timers)
7 W V0 J; b3 D8 ] - , M5 R0 O& i s: y& Z
- {
# X6 {; X# ~2 ?7 ~; M - # @+ w# y6 H4 c+ ]! c
- uint16_t i,j;
1 c3 \8 P. @' x6 A0 m - . I8 a# m9 {9 j3 g! i- B- E
- for(i=0;i<timers ;i++)
+ [. b& K$ r, z! @ ]3 Z+ R8 F
( ~0 q3 H2 b3 O' _ s# M* h. `8 `7 C- {
+ p& r! |1 P+ j* Y) q# ` - ) v! z6 n) L: w N
- for(j=0;j<0xffff;j++)" C/ w( v1 X" ^# \) Z- Z, O
1 o1 k- P6 q- q K7 r- {}
; c8 v/ B1 |% B y - : E4 B7 L3 _! Y' }! A1 _" n
- }# Z% L" @& t6 O' X1 g. Q& b4 L
- - }2 L/ j* h) a; `; \6 w0 O# v
- }</font>
复制代码
7 j* n2 f+ [( F( s4 Z- Z7 O, A' K% }
- <font face="微软雅黑" size="3">//delay.h( e c% x, s) t U0 Y! f$ k
- N' w# j+ C8 T4 c$ F( g/ T7 N t- #ifndef _DELAY_H
( D9 G1 E3 T: g- ^* z- p
" Z3 l" |/ ` {/ x6 N9 ]4 p( v- #define _DELAY_H
9 O) z# h2 H+ u
. f1 a- k! p z9 x& D- #include "stdint.h"" f9 [8 h1 `: N# ?, E
- 3 D4 ]9 h. E; s$ j: G
- void delay(uint16_t timers);
( N/ G; ?3 t V9 r0 t/ \/ ?6 } - 0 s3 m* M! P; G- x$ A5 a
- #endif</font>
复制代码
* p: S8 {0 E( n8 }! m
" D* g+ G- J7 \; |- n* K" w o |