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

STM32F103VET ETR计脉冲数程序

[复制链接]
mengyu139 发布时间:2014-11-9 10:47
  1. /******************** (C) COPYRIGHT 2012 WildFire Team **************************
    8 F( M" K9 l0 Z0 ^& b: G9 B9 B

  2. / g4 N) o. k& l, ]! S% a
  3. **********************************************************************************/1 I* x9 L/ }0 C" M8 }
  4. #include "stm32f10x.h"
    # k  d8 J  l" F! r7 U
  5. #include "stm32f10x_conf.h "
    # B0 E  [' w7 F- l6 O3 ?( _

  6. 9 z5 d5 A  `2 o! D
  7. void Delay(__IO u32 nCount);1 U/ C+ b! z3 i' ^( O9 r! S6 g. _) e  C$ s
  8. void TIM4_EIR_Init(void);9 B' x% e+ ]& A" C
  9. void PA8_INIT(void);  N7 t- G. }$ X9 {

  10. 9 B7 U$ G# T8 M) W1 N4 z
  11. uint16_t COUNT = 0;) |& S8 J% w0 n5 X
  12. 3 j4 _4 y* r9 n. M- a2 `% @" C" ]4 a
  13. int main(void)2 D0 l' L. @7 B- y& o5 R
  14. {        7 ?' X  u2 S% R6 k8 m$ }/ H) m
  15.         PA8_INIT();
    8 g; z4 @$ y4 @5 u5 j4 f3 I' V$ C% q
  16.         TIM4_EIR_Init();
    / r- n) @8 O" s( T
  17.         while (1)
    - j$ c. }7 S/ P
  18.         {        , b/ l0 A+ r4 `5 q
  19.                 TIM_SetCounter(TIM4, 0); // CLEAR6 x; e3 _7 L$ Y( N4 L
  20.                
    % A1 \. m' D7 N! ^# t) s
  21.                 Delay(200);
    2 C; z* h0 V& ^4 N
  22.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
    ( Z- I/ w0 j" W; g+ ]: s
  23.                 Delay(200);- \9 ~' ?. n) y) g9 i4 e$ r7 {
  24.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);! k( J, x8 e. O$ B! D2 u3 u
  25.                 Delay(200);. Q# R4 K2 l' [  k! }) I/ S7 e
  26.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
    / }) t) D4 Z# v2 n9 D3 I
  27.                 Delay(200);
    * W, I3 ^3 y8 K* o7 i# ?
  28.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);
    4 a" x* {; u9 X) |+ h) P5 G; X# [
  29.                 Delay(200);: C/ }- U+ `) |/ x# U
  30.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
    4 C- U; ^# k: J$ l: H) R
  31.                 Delay(200);3 _( x' I! T; k* l; y; r) p
  32.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);) s6 E/ X5 S4 U5 D! ~' `
  33.                 Delay(200);
    1 ?- |& f* Z6 V! S2 n; _! r
  34.                 GPIO_SetBits(GPIOA, GPIO_Pin_8);
    $ h/ r* I6 m# m* P9 M9 F$ A5 s
  35.                 Delay(200);
    ( i+ U/ G7 I5 u- {& F! J
  36.                 GPIO_ResetBits(GPIOA, GPIO_Pin_8);" A2 _8 c8 p( j/ _/ t1 x% D
  37.                 % k9 A6 q2 k2 t3 S
  38.                
    % }7 r- y! j" g' D+ b; s) ^6 {
  39.                 COUNT=TIM_GetCounter(TIM4);9 v" T; j9 {) |7 ^
  40.                 TIM_SetCounter(TIM4, 0); // CLEAR
    $ t8 X4 q5 J  Z/ X: I
  41.                 COUNT=TIM_GetCounter(TIM4);
    , k( ?8 G* e* [, T' r
  42.                 TIM_SetCounter(TIM4, 0); // CLEAR        9 h: [' G# \) \2 p; \
  43.         }
      v; I. C2 S8 @5 J1 y
  44. }
    ; A9 k* `6 K+ n4 X% @1 b4 }% G1 }
  45. & D1 N# s, u9 |
  46. void Delay(__IO u32 nCount)         //简单的延时函数. `8 ]/ V$ }' V; Z" B
  47. {, k7 N. n5 J  h! n7 I# S4 Z# P$ W
  48.         for(; nCount != 0; nCount--);; c1 d" j5 u" L; ]
  49. }
    ) U" s) y* O* D2 K# k. P4 ^
  50. * ?1 v0 ^; c- a

  51. # w# m& Z9 B+ |# q2 j. P
  52. /*
    ! G" R  c0 `' P) B: F% N
  53. void TIM4_EIR_Init(void): `8 x8 m* u( C. w. B" {8 m
  54. {
    5 r8 r6 M( t6 r5 w
  55.         GPIO_InitTypeDef GPIO_InitStructure;
    , o( D! _" l# q- i; d
  56.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    . x2 e: b% A3 s
  57.    
    1 }. B* `0 l; ~7 Z* X
  58.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);' \  C$ n8 `0 E) {, b! ~
  59.      
    : N" V# x" s$ n  ]' h
  60.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);7 I2 I0 u  D/ u5 Z2 w
  61. 0 ^8 a2 L+ N8 s4 ?6 G& y* L0 X
  62.                                                         //Config PE0 为浮空输入 , H: I- o3 d0 Y% ~2 M3 }9 f/ q- g
  63.                                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    % }- R" i9 t5 y
  64.                                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 7 {. I: [+ t& ]/ R. D( J. |
  65.                                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; * y- y& F) f) o  A
  66.                                 GPIO_Init(GPIOE, &GPIO_InitStructure);
    ) a4 {8 X/ o* U; i

  67. * a) z0 I5 L% [* ]3 x* P
  68.                                 TIM_DeInit(TIM4);8 d- p' b% I  {) X: C! G
  69.                                 TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
    0 r# t* R4 t2 u- }
  70.                                 TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
    9 X* ?0 m5 Y% F5 o) f
  71.                                 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; & Y; r* J- `5 w/ W  F
  72.                                 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 1 D% d. K* X- F; i$ |8 n0 M2 P
  73.                                 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  // Time base configuration
      ]0 V, Q* E/ a& q2 T/ Q
  74.    
    $ n" M% f8 M* \- G2 p6 u6 E9 N
  75.                                 TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);   
    ! ]$ |3 e3 l/ p( U9 O5 n
  76.                                 TIM_SetCounter(TIM4, 0);    5 s/ I4 k# b. h. ]3 b
  77.                                 TIM_Cmd(TIM4, ENABLE);
    : N: A2 ^; j- y1 e( \
  78.         6 E. l6 ]% l) ]9 k
  79. }3 K/ _1 U( W! O. M4 y/ j% ?
  80. */
    , ^. k9 P7 l9 c: [
  81. void TIM4_EIR_Init(void)* s( J) H4 X3 g6 T# b! v
  82. {) J9 _7 T, f9 I4 B
  83.         & k6 C* r$ p0 R6 D. J) t% D0 u/ ~
  84.         GPIO_InitTypeDef GPIO_InitStructure;
    2 U3 R- p2 H: B, b$ b
  85.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    # R/ j- I( L* w' ]
  86.   ///////////////////////////////////////////////////////////////////////////// & e5 J( Z$ Z1 P) d- {; l
  87.                         /*        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);0 I' d: N: Y4 |9 _6 J( N4 u" B' `( D  C
  88. 7 J  g4 b4 {* w/ L/ n0 @
  89.                                 TIM_CounterModeConfig(TIM3,TIM_CounterMode_Up);
    4 R7 y- y7 B6 K! {
  90.                                 TIM_SetAutoreload(TIM4,9);
    7 w* w- X$ y# P, ?3 l* A0 ^9 b
  91. 7 J/ h- k1 h- s, U6 P  k
  92.                                 TIM_TIxExternalClockConfig(TIM4,TIM_TIxExternalCLK1Source_TI2,TIM_ICPolarity_Rising,0);
    ' \7 }2 ^, |' O- R' h
  93. , q5 W: F7 g" |9 Y/ I: M
  94.                                 TIM_Cmd(TIM4,ENABLE);8 ~! }( |1 |' z6 b3 R
  95.                                 TIM_ITConfig(TIM4,TIM_IT_CC2|TIM_IT_Update,ENABLE);. u; E. d# y: I3 [- o
  96.         */- F" l* T+ `1 i3 f& J% C; o
  97.         /////////////////////////////////////////////////////////////////////////////
    ; W2 _  P$ x4 h: k9 P& t
  98.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);4 E, `: g7 F/ T# U. _& v- y' a
  99.      * @" W, S  Z- U, ~2 {
  100.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);  q7 _# Z0 N; L" `4 ~+ l

  101. 8 X3 l; n# p- G# R
  102.                                                         //Config PE0 为浮空输入
    & K% l- T, W1 k
  103.                                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; $ Z( w0 ^8 T3 f
  104.                                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    3 Z) y- ]2 `2 r) m# r7 f5 Z
  105.                                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 1 W0 @; @) S4 {  D% V
  106.                                 GPIO_Init(GPIOE, &GPIO_InitStructure);
    4 @. K8 A/ f* M

  107. " ~  H( `& e# T! e9 h5 y7 ^
  108.                                 TIM_DeInit(TIM4);4 a! ~3 c% M9 i) g; u
  109.                                 TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
    * r/ z# D. l9 T  d( s4 s
  110.                                 TIM_TimeBaseStructure.TIM_Period = 0xFFFF; $ p/ d2 E8 {. @# J" r$ j5 f
  111.                                 TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; ' C4 V! \% P+ d' u- I
  112.                                 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    ! s& p( d1 Z3 S4 }& W
  113.                                 TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  // Time base configuration
    ! `+ V3 T2 \" p" ^- A+ m! z
  114.    ( O) J8 y5 M) F3 A: `  a  N
  115.                           TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 10);   
    9 T$ B1 F3 A2 i+ d) d8 S6 t# p
  116.                                 TIM_SetCounter(TIM4, 0);   
    . U# k7 P& f3 h1 {
  117.                                 TIM_Cmd(TIM4, ENABLE); ; o) ]) X: m: d. O1 y. r

  118.   ~* l# f1 V/ R+ f$ H* l; J
  119.         
    5 e. }9 D) j  R9 |$ A2 F
  120. }
    - k. ?0 n% N$ R2 x6 q! n
  121. void PA8_INIT(void)# w* r: P! z( T4 Q" P3 M& h$ q
  122. {                % N: F4 r* o( P8 r* R$ R
  123.         /*定义一个GPIO_InitTypeDef类型的结构体*/' [' ?. E, }& `6 V6 f1 ~4 D0 @8 o0 @
  124.         GPIO_InitTypeDef GPIO_InitStructure;. Y4 A5 O2 ^3 b; T$ N

  125. 6 }& N! e& p$ X" |" N
  126.         /*开启GPIOA的外设时钟*/# b' t  {0 g# \, L
  127.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); ! z+ V$ k) d5 B, y8 ^

  128. 5 b7 T- P# X' w8 n
  129.         /*选择要控制的GPIOA8引脚*/                                                                                                                           % K8 Y8 G* L7 s  o2 i  M  N) s
  130.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;+ T6 b5 H# J0 t
  131. 9 h# {  G+ |- E$ \. g2 s  U1 d6 W
  132.         /*设置引脚模式为通用推挽输出*/% J. N) ^  P! k% t' ]) R5 `
  133.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   2 P6 a6 b- g- w
  134. 0 S& b5 K( T0 A& W. s; S+ x
  135.         /*设置引脚速率为50MHz */   & S9 x, y- R5 Q  A  x
  136.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; % T" B" c9 @% `. L! p$ t
  137. : a2 ^; M2 o3 z' V- F1 `9 S
  138.         /*调用库函数,初始化GPIOA*/  T6 @6 u3 ?/ q% Y7 q/ d
  139.           GPIO_Init(GPIOA, &GPIO_InitStructure);                  
    + {8 O# m) V6 G

  140.   d( a9 A0 R' W2 U. F7 w: P
  141.         /* 关闭所有led灯        */
    ' t' L" t( i1 t  M/ A$ V
  142.         GPIO_SetBits(GPIOA, GPIO_Pin_8);         9 [/ ^3 O1 Y% Q! R" g& A
  143. }
    * {5 |3 t) o' P# g. n7 ]

  144. * U6 |5 _# G8 J8 c$ [4 W8 o
  145. / P# T* h. ]; @; _( f, Y) s0 O

  146. 8 p- E/ B9 r/ v5 y$ N( U: U! G7 W
  147. /******************* (C) COPYRIGHT 2012 WildFire Team *****END OF FILE************/
    - ^1 {' s  ^4 |4 ]
复制代码
7 l! o, q- Q5 t/ ^! k% A
, C* w% S! P8 N
赞 收藏 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
楼主辛苦了 谢谢分享9 V3 o: k0 ]0 f: p% Q( z" p
6874577 回答时间:2014-12-6 15:37:59
看看不知道接口怎么搞

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版