- /******************** (C) COPYRIGHT 2012 WildFire Team **************************
! @ _+ G3 D& O/ p2 S* w
$ D* l* D5 L1 h! k' Y8 N- **********************************************************************************/' I/ r: s1 y# W+ b8 y$ K
- #include "stm32f10x.h"
, T& N$ S) F5 x - #include "stm32f10x_conf.h "2 w+ U+ v; e) ]5 E0 w
, z' x) d. K+ t/ W: P* j: H- void Delay(__IO u32 nCount);& }$ _$ I0 O s/ e( h; V
- void TIM4_EIR_Init(void);) P2 {! d+ N6 ^5 e4 ~0 Q# X- I, E4 v
- void PA8_INIT(void);$ y7 u i$ f1 c% m* J
; L# d% J) B# ^- uint16_t COUNT = 0;- r" c$ L* [1 m0 |
- ( f+ C W6 { u7 J, q/ F) t
- int main(void)0 i! J2 y1 a% \( A# L2 r
- { ( T; `! E& E5 C) A; W
- PA8_INIT();8 n" v/ r: v; M3 o* Y0 o2 X0 i
- TIM4_EIR_Init();- y9 C4 V, W6 p1 h7 G/ `1 Y
- while (1)
* k3 X1 v& R( O7 Q s& X$ F - { 5 y7 F* H' E5 a. p' X! x& {& I
- TIM_SetCounter(TIM4, 0); // CLEAR, O+ H# }7 p; l6 A! B
-
/ ]7 X# I! v' v* H5 m, n - Delay(200);# V# B( j' k6 J8 R' b
- GPIO_SetBits(GPIOA, GPIO_Pin_8);6 Z6 f( y% {. O; b6 y2 {" t9 _0 |
- Delay(200);
3 M. P" I% T% [- P% p - GPIO_ResetBits(GPIOA, GPIO_Pin_8);: k7 \" \' [! e2 ~7 ]. T
- Delay(200);: N. s% E7 d4 Z5 [
- GPIO_SetBits(GPIOA, GPIO_Pin_8);
, G, ?+ I/ K! Y6 D - Delay(200);
4 ~9 J# Z( l. y6 E - GPIO_ResetBits(GPIOA, GPIO_Pin_8);
9 z- L2 T: |' Q - Delay(200);5 v+ H5 p9 @' _, y( [* {
- GPIO_SetBits(GPIOA, GPIO_Pin_8);
6 ~# G$ G# Q# N+ Y6 u L - Delay(200);- V C! v* A/ }* ?7 j* F4 r, M
- GPIO_ResetBits(GPIOA, GPIO_Pin_8);
6 F1 m5 r% z+ [' ?7 ^ - Delay(200);
2 b# n; Y1 b5 D- S - GPIO_SetBits(GPIOA, GPIO_Pin_8);; p( Y( q. M& R
- Delay(200);
" w$ L7 V! U+ f* J) {) e. X - GPIO_ResetBits(GPIOA, GPIO_Pin_8);
! x2 w1 \* \ K# K2 @ W) G9 n - ' r+ ~; T3 e! y8 y
- # {) i* f! p. |4 U6 n
- COUNT=TIM_GetCounter(TIM4);8 H5 s& z5 ?" J* B7 e
- TIM_SetCounter(TIM4, 0); // CLEAR. n7 c! ]0 L- C- l. W C
- COUNT=TIM_GetCounter(TIM4); D( K' J) v. z2 k
- TIM_SetCounter(TIM4, 0); // CLEAR ' v9 ^" R& g$ q
- }+ l) ~) \: y4 [ }( P# `3 m
- }! O0 a+ c0 {" C6 f
1 a: P. P Q- O2 c9 t. c- void Delay(__IO u32 nCount) //简单的延时函数
) n4 W2 _' I8 V! c" | }( C - {
4 X9 i7 G& J- Y& \' V8 g& S1 m - for(; nCount != 0; nCount--);" b' b2 H* s. c& _" o
- }
. [3 r+ q" `* w5 q
|+ K/ M. E( `& z% y$ t-
. f6 ~& d. {/ T" ]$ K - /*. d+ e3 D# I2 k9 d) b5 k; E4 {# b
- void TIM4_EIR_Init(void). e# m! R+ e+ Z" f( |+ R9 g
- {
" l7 b7 W& g' F, `) Q# y - GPIO_InitTypeDef GPIO_InitStructure;: L$ H' g2 I1 f2 a" T0 F3 _8 l7 y
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;0 `- g, N: q9 Z% G8 n' A8 T
- 0 X* Y! o5 o6 u' e$ o5 m" B1 F
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);: E9 e& ?2 f- `+ H
-
2 I! ^# y9 q6 x - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);+ C6 V# A" ~' c; ^% |* X( n0 D
. u" b; F s: K# s3 \" y7 ?: N2 j- //Config PE0 为浮空输入 + R" i- A- D& i( H; b
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
2 g1 b! F' Z, s+ ?) C- W6 l - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
G3 V) ^! S o \8 ^( | - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + P' \* h8 ]( e6 [. h
- GPIO_Init(GPIOE, &GPIO_InitStructure); : [4 t9 J3 H5 @6 f2 l4 Y% Y
- 8 j' j7 p& Y4 b2 `
- TIM_DeInit(TIM4);; e: C% j' f/ f
- TIM_TimeBaseStructure.TIM_Prescaler = 0x00; 2 Z' V( a* e7 k
- TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
+ R& V2 b4 `6 w5 F* t - TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
8 O; @ b1 _- `. I - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; $ E R- N! i* l5 w
- TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); // Time base configuration ( |3 q. K9 P: v4 j4 _$ L! t
-
3 j1 ~' l: y+ `6 u4 b - TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
5 P! h9 s5 }$ L' T" q6 `8 a) U/ g; q - TIM_SetCounter(TIM4, 0);
' i+ O7 w3 K: w2 @ - TIM_Cmd(TIM4, ENABLE);
; R; ?8 \ g) F2 n% ~4 C4 E7 } - 1 _. _7 ]2 S! {# N6 K) i
- }. _6 E$ \5 Y1 i# e( A( Y% }9 @, T
- */
5 t, [5 }' |- Z% ^% R5 u, M9 o - void TIM4_EIR_Init(void)- Q H+ M; q6 I# O8 Q
- {5 k! ~0 e2 d( j1 K! }. x1 h" y
-
! B+ V+ ]7 B) q" C% @; q - GPIO_InitTypeDef GPIO_InitStructure;
! c P9 l: V; V" I* C - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
3 k8 P. Z9 l+ I m6 \/ M0 E - /////////////////////////////////////////////////////////////////////////////
4 ~7 z( r3 e5 e! G/ K - /* RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);' ]1 A$ a u6 w' b4 ?( i, f$ O2 u6 R8 K
: @3 W$ L. y- o- h. b: `6 q- j- TIM_CounterModeConfig(TIM3,TIM_CounterMode_Up);
7 s5 S; I& H: u% b$ Y: w/ J6 t - TIM_SetAutoreload(TIM4,9);
6 @% }5 b6 R+ P! Y" x) v - ! Z6 y8 W9 R& j0 O; f: g
- TIM_TIxExternalClockConfig(TIM4,TIM_TIxExternalCLK1Source_TI2,TIM_ICPolarity_Rising,0);9 b9 z7 D8 ~; m3 p; Z, l8 m+ P
- # K1 d. S) W9 m, J3 Q* E" D
- TIM_Cmd(TIM4,ENABLE);8 H g1 [; q2 E, L3 l+ q' j
- TIM_ITConfig(TIM4,TIM_IT_CC2|TIM_IT_Update,ENABLE);
y6 l0 J' j# O8 i0 M! v* E - */8 e1 }. V# l+ T0 ]* B9 u1 Z. y8 k. h
- /////////////////////////////////////////////////////////////////////////////% L( O5 m' O4 C' g" i2 M4 f9 L
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);+ \5 [2 K6 l; f& }9 d$ {4 ~
- ' ^' N; M& u' I( `- ?
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
, I' | q; G ~ \1 ?
8 z8 z+ S* {$ r4 ^: \, z. l- //Config PE0 为浮空输入
4 x; ~7 Y, y) O; j @( o2 t - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
. h" q- K: v, I( Q - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
9 H; C# Q$ P; [6 v- t S" H- X; r - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
3 C2 B3 F4 x( F) s; Q! I - GPIO_Init(GPIOE, &GPIO_InitStructure); ' [% O |7 i9 B5 c: M+ S8 |6 A
$ x- L7 s# ?, |, Q! Z$ W- TIM_DeInit(TIM4);
6 h1 c: A5 ^% O! R7 U - TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
# i; E5 b. V) [! Q$ T - TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
( f, ~6 V4 Q4 \( K, H" } - TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; 6 D# n& D; S* g% ^
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 0 j" i7 u. r1 \* ]* n, R
- TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); // Time base configuration ' V* A% M6 U8 y. ~7 M
- n3 o" P% N2 F. Q, x
- TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 10); 8 `& c- U; i) `# F8 L x# \
- TIM_SetCounter(TIM4, 0); 3 ^& b! [$ n" Q
- TIM_Cmd(TIM4, ENABLE);
: y) |+ w: H, @, Z% y
, t% G/ f) P! ?: f4 Z-
$ K2 h) h5 [8 `1 Q" l5 n4 ` - }
# z, t& D' U) A4 B2 {. w- U0 R - void PA8_INIT(void): ~: c1 I6 I/ ~9 F6 T" v3 n! s; C, D
- { 6 k' y; O K* c
- /*定义一个GPIO_InitTypeDef类型的结构体*/
f0 f9 n0 |1 `' d. U - GPIO_InitTypeDef GPIO_InitStructure;7 c: e0 e1 _; e1 f9 J3 W
- 7 [& y ?- q$ g9 {0 S. i" O
- /*开启GPIOA的外设时钟*/
# L; j0 m; N- c" ~ k+ O/ s - RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
( i* n ?* [/ w: i - ( h4 p5 R; w8 _
- /*选择要控制的GPIOA8引脚*/
6 A( Z& j$ A( d& D- u - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
' w0 ~, h. m$ P1 W# `' A6 f, E
% l! h/ r; Z& c8 T0 y: E+ Y% b2 P- /*设置引脚模式为通用推挽输出*/; h: x6 g' ~; X$ {
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; / c0 R9 _3 K1 `7 B
- 3 O; P) i4 b* x/ y' T- B5 U4 E
- /*设置引脚速率为50MHz */ . G% }: c# O3 ]- F. I
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; . L9 H: }" i+ p+ I: d
- , `7 N# X& k$ ^7 |/ Q
- /*调用库函数,初始化GPIOA*/$ `& y" f7 A1 B7 q1 _' c9 p' [9 D% V
- GPIO_Init(GPIOA, &GPIO_InitStructure);
% y9 t2 K$ l% Z3 @/ d) _2 x) i - , q0 w* l$ q) C; Z; X+ z
- /* 关闭所有led灯 */ Z% R; B/ D+ }' `" W
- GPIO_SetBits(GPIOA, GPIO_Pin_8);
$ I% U" y/ T+ X) o# D# c; k - }
7 ^' k5 b8 e o# P2 k% F$ D& v! ?& p - + n" u, h& a- w
) |( L. d6 ] g& `
3 }# W6 @9 P% h- /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
9 k! Y9 n! M; Y, J I7 y
复制代码
9 G( g8 e! V7 y$ E1 R
4 S ]' @" E+ e3 Q# ]7 Y0 D0 C3 z |