你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103VET ETR计脉冲数程序

[复制链接]
mengyu139 发布时间:2014-11-9 10:47
  1. /******************** (C) COPYRIGHT 2012 WildFire Team **************************
    ! @  _+ G3 D& O/ p2 S* w

  2. $ D* l* D5 L1 h! k' Y8 N
  3. **********************************************************************************/' I/ r: s1 y# W+ b8 y$ K
  4. #include "stm32f10x.h"
    , T& N$ S) F5 x
  5. #include "stm32f10x_conf.h "2 w+ U+ v; e) ]5 E0 w

  6. , z' x) d. K+ t/ W: P* j: H
  7. void Delay(__IO u32 nCount);& }$ _$ I0 O  s/ e( h; V
  8. void TIM4_EIR_Init(void);) P2 {! d+ N6 ^5 e4 ~0 Q# X- I, E4 v
  9. void PA8_INIT(void);$ y7 u  i$ f1 c% m* J

  10. ; L# d% J) B# ^
  11. uint16_t COUNT = 0;- r" c$ L* [1 m0 |
  12. ( f+ C  W6 {  u7 J, q/ F) t
  13. int main(void)0 i! J2 y1 a% \( A# L2 r
  14. {        ( T; `! E& E5 C) A; W
  15.         PA8_INIT();8 n" v/ r: v; M3 o* Y0 o2 X0 i
  16.         TIM4_EIR_Init();- y9 C4 V, W6 p1 h7 G/ `1 Y
  17.         while (1)
    * k3 X1 v& R( O7 Q  s& X$ F
  18.         {        5 y7 F* H' E5 a. p' X! x& {& I
  19.                 TIM_SetCounter(TIM4, 0); // CLEAR, O+ H# }7 p; l6 A! B
  20.                
    / ]7 X# I! v' v* H5 m, n
  21.                 Delay(200);# V# B( j' k6 J8 R' b
  22.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);6 Z6 f( y% {. O; b6 y2 {" t9 _0 |
  23.                 Delay(200);
    3 M. P" I% T% [- P% p
  24.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);: k7 \" \' [! e2 ~7 ]. T
  25.                 Delay(200);: N. s% E7 d4 Z5 [
  26.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
    , G, ?+ I/ K! Y6 D
  27.                 Delay(200);
    4 ~9 J# Z( l. y6 E
  28.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);
    9 z- L2 T: |' Q
  29.                 Delay(200);5 v+ H5 p9 @' _, y( [* {
  30.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
    6 ~# G$ G# Q# N+ Y6 u  L
  31.                 Delay(200);- V  C! v* A/ }* ?7 j* F4 r, M
  32.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);
    6 F1 m5 r% z+ [' ?7 ^
  33.                 Delay(200);
    2 b# n; Y1 b5 D- S
  34.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);; p( Y( q. M& R
  35.                 Delay(200);
    " w$ L7 V! U+ f* J) {) e. X
  36.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);
    ! x2 w1 \* \  K# K2 @  W) G9 n
  37.                 ' r+ ~; T3 e! y8 y
  38.                 # {) i* f! p. |4 U6 n
  39.                 COUNT=TIM_GetCounter(TIM4);8 H5 s& z5 ?" J* B7 e
  40.                 TIM_SetCounter(TIM4, 0); // CLEAR. n7 c! ]0 L- C- l. W  C
  41.                 COUNT=TIM_GetCounter(TIM4);  D( K' J) v. z2 k
  42.                 TIM_SetCounter(TIM4, 0); // CLEAR        ' v9 ^" R& g$ q
  43.         }+ l) ~) \: y4 [  }( P# `3 m
  44. }! O0 a+ c0 {" C6 f

  45. 1 a: P. P  Q- O2 c9 t. c
  46. void Delay(__IO u32 nCount)         //简单的延时函数
    ) n4 W2 _' I8 V! c" |  }( C
  47. {
    4 X9 i7 G& J- Y& \' V8 g& S1 m
  48.         for(; nCount != 0; nCount--);" b' b2 H* s. c& _" o
  49. }
    . [3 r+ q" `* w5 q

  50.   |+ K/ M. E( `& z% y$ t

  51. . f6 ~& d. {/ T" ]$ K
  52. /*. d+ e3 D# I2 k9 d) b5 k; E4 {# b
  53. void TIM4_EIR_Init(void). e# m! R+ e+ Z" f( |+ R9 g
  54. {
    " l7 b7 W& g' F, `) Q# y
  55.         GPIO_InitTypeDef GPIO_InitStructure;: L$ H' g2 I1 f2 a" T0 F3 _8 l7 y
  56.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;0 `- g, N: q9 Z% G8 n' A8 T
  57.    0 X* Y! o5 o6 u' e$ o5 m" B1 F
  58.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);: E9 e& ?2 f- `+ H
  59.      
    2 I! ^# y9 q6 x
  60.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);+ C6 V# A" ~' c; ^% |* X( n0 D

  61. . u" b; F  s: K# s3 \" y7 ?: N2 j
  62.                                                         //Config PE0 为浮空输入 + R" i- A- D& i( H; b
  63.                                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    2 g1 b! F' Z, s+ ?) C- W6 l
  64.                                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
      G3 V) ^! S  o  \8 ^( |
  65.                                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + P' \* h8 ]( e6 [. h
  66.                                 GPIO_Init(GPIOE, &GPIO_InitStructure); : [4 t9 J3 H5 @6 f2 l4 Y% Y
  67. 8 j' j7 p& Y4 b2 `
  68.                                 TIM_DeInit(TIM4);; e: C% j' f/ f
  69.                                 TIM_TimeBaseStructure.TIM_Prescaler = 0x00; 2 Z' V( a* e7 k
  70.                                 TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
    + R& V2 b4 `6 w5 F* t
  71.                                 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
    8 O; @  b1 _- `. I
  72.                                 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; $ E  R- N! i* l5 w
  73.                                 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  // Time base configuration ( |3 q. K9 P: v4 j4 _$ L! t
  74.    
    3 j1 ~' l: y+ `6 u4 b
  75.                                 TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);   
    5 P! h9 s5 }$ L' T" q6 `8 a) U/ g; q
  76.                                 TIM_SetCounter(TIM4, 0);   
    ' i+ O7 w3 K: w2 @
  77.                                 TIM_Cmd(TIM4, ENABLE);
    ; R; ?8 \  g) F2 n% ~4 C4 E7 }
  78.         1 _. _7 ]2 S! {# N6 K) i
  79. }. _6 E$ \5 Y1 i# e( A( Y% }9 @, T
  80. */
    5 t, [5 }' |- Z% ^% R5 u, M9 o
  81. void TIM4_EIR_Init(void)- Q  H+ M; q6 I# O8 Q
  82. {5 k! ~0 e2 d( j1 K! }. x1 h" y
  83.        
    ! B+ V+ ]7 B) q" C% @; q
  84.         GPIO_InitTypeDef GPIO_InitStructure;
    ! c  P9 l: V; V" I* C
  85.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    3 k8 P. Z9 l+ I  m6 \/ M0 E
  86.   /////////////////////////////////////////////////////////////////////////////
    4 ~7 z( r3 e5 e! G/ K
  87.                         /*        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);' ]1 A$ a  u6 w' b4 ?( i, f$ O2 u6 R8 K

  88. : @3 W$ L. y- o- h. b: `6 q- j
  89.                                 TIM_CounterModeConfig(TIM3,TIM_CounterMode_Up);
    7 s5 S; I& H: u% b$ Y: w/ J6 t
  90.                                 TIM_SetAutoreload(TIM4,9);
    6 @% }5 b6 R+ P! Y" x) v
  91. ! Z6 y8 W9 R& j0 O; f: g
  92.                                 TIM_TIxExternalClockConfig(TIM4,TIM_TIxExternalCLK1Source_TI2,TIM_ICPolarity_Rising,0);9 b9 z7 D8 ~; m3 p; Z, l8 m+ P
  93. # K1 d. S) W9 m, J3 Q* E" D
  94.                                 TIM_Cmd(TIM4,ENABLE);8 H  g1 [; q2 E, L3 l+ q' j
  95.                                 TIM_ITConfig(TIM4,TIM_IT_CC2|TIM_IT_Update,ENABLE);
      y6 l0 J' j# O8 i0 M! v* E
  96.         */8 e1 }. V# l+ T0 ]* B9 u1 Z. y8 k. h
  97.         /////////////////////////////////////////////////////////////////////////////% L( O5 m' O4 C' g" i2 M4 f9 L
  98.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);+ \5 [2 K6 l; f& }9 d$ {4 ~
  99.      ' ^' N; M& u' I( `- ?
  100.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
    , I' |  q; G  ~  \1 ?

  101. 8 z8 z+ S* {$ r4 ^: \, z. l
  102.                                                         //Config PE0 为浮空输入
    4 x; ~7 Y, y) O; j  @( o2 t
  103.                                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    . h" q- K: v, I( Q
  104.                                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    9 H; C# Q$ P; [6 v- t  S" H- X; r
  105.                                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    3 C2 B3 F4 x( F) s; Q! I
  106.                                 GPIO_Init(GPIOE, &GPIO_InitStructure); ' [% O  |7 i9 B5 c: M+ S8 |6 A

  107. $ x- L7 s# ?, |, Q! Z$ W
  108.                                 TIM_DeInit(TIM4);
    6 h1 c: A5 ^% O! R7 U
  109.                                 TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
    # i; E5 b. V) [! Q$ T
  110.                                 TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
    ( f, ~6 V4 Q4 \( K, H" }
  111.                                 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; 6 D# n& D; S* g% ^
  112.                                 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 0 j" i7 u. r1 \* ]* n, R
  113.                                 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  // Time base configuration ' V* A% M6 U8 y. ~7 M
  114.      n3 o" P% N2 F. Q, x
  115.                           TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 10);   8 `& c- U; i) `# F8 L  x# \
  116.                                 TIM_SetCounter(TIM4, 0);    3 ^& b! [$ n" Q
  117.                                 TIM_Cmd(TIM4, ENABLE);
    : y) |+ w: H, @, Z% y

  118. , t% G/ f) P! ?: f4 Z
  119.         
    $ K2 h) h5 [8 `1 Q" l5 n4 `
  120. }
    # z, t& D' U) A4 B2 {. w- U0 R
  121. void PA8_INIT(void): ~: c1 I6 I/ ~9 F6 T" v3 n! s; C, D
  122. {                6 k' y; O  K* c
  123.         /*定义一个GPIO_InitTypeDef类型的结构体*/
      f0 f9 n0 |1 `' d. U
  124.         GPIO_InitTypeDef GPIO_InitStructure;7 c: e0 e1 _; e1 f9 J3 W
  125. 7 [& y  ?- q$ g9 {0 S. i" O
  126.         /*开启GPIOA的外设时钟*/
    # L; j0 m; N- c" ~  k+ O/ s
  127.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
    ( i* n  ?* [/ w: i
  128. ( h4 p5 R; w8 _
  129.         /*选择要控制的GPIOA8引脚*/                                                                                                                          
    6 A( Z& j$ A( d& D- u
  130.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    ' w0 ~, h. m$ P1 W# `' A6 f, E

  131. % l! h/ r; Z& c8 T0 y: E+ Y% b2 P
  132.         /*设置引脚模式为通用推挽输出*/; h: x6 g' ~; X$ {
  133.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   / c0 R9 _3 K1 `7 B
  134. 3 O; P) i4 b* x/ y' T- B5 U4 E
  135.         /*设置引脚速率为50MHz */   . G% }: c# O3 ]- F. I
  136.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; . L9 H: }" i+ p+ I: d
  137. , `7 N# X& k$ ^7 |/ Q
  138.         /*调用库函数,初始化GPIOA*/$ `& y" f7 A1 B7 q1 _' c9 p' [9 D% V
  139.           GPIO_Init(GPIOA, &GPIO_InitStructure);                  
    % y9 t2 K$ l% Z3 @/ d) _2 x) i
  140. , q0 w* l$ q) C; Z; X+ z
  141.         /* 关闭所有led灯        */  Z% R; B/ D+ }' `" W
  142.         GPIO_SetBits(GPIOA, GPIO_Pin_8);         
    $ I% U" y/ T+ X) o# D# c; k
  143. }
    7 ^' k5 b8 e  o# P2 k% F$ D& v! ?& p
  144. + n" u, h& a- w

  145. ) |( L. d6 ]  g& `

  146. 3 }# W6 @9 P% h
  147. /******************* (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
收藏 1 评论4 发布时间:2014-11-9 10:47

举报

4个回答
沐紫 回答时间:2014-11-11 17:26:25
楼主分享了好多代码呀,赞个
rianboe 回答时间:2014-11-11 19:43:25
谢谢分享!!!
随风-368133 回答时间:2014-11-11 19:45:37
楼主辛苦了 谢谢分享
3 v3 E& a7 p$ Z; w; U% W4 e
6874577 回答时间:2014-12-6 15:37:59
看看不知道接口怎么搞

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版