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

【经验分享】STM32F0系列开发之定时器的使用

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
以下源码以定时器3为例,其他可以以此类推
) p- N' p4 [9 u8 E7 y* \! p
; t8 x1 [8 b6 w; K* _# T: i.c文件
) Z8 \- q- p, S( f- x
  1. #include "Time.h"
    6 y; n3 d8 u$ U7 K! G

  2. 8 J& ^1 u( s# @1 F6 s; }: i
  3. void TIM3_Int_Init(uint32_t time_us)
    2 U) E# i  I4 S. S( l8 D; G3 h
  4. {- E; f8 E$ y$ N. }; {
  5.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    3 r+ J# f( a- f' {/ @
  6.         NVIC_InitTypeDef NVIC_InitStructure;
    " H: Y* x. j) @: w6 s
  7. ' @* i; b- j! |3 Z' E2 q
  8.         unsigned char prescaler = 1;
    + w$ n3 i$ X  p0 |: Q3 X5 s
  9.         unsigned char clkDiv = 1;//根据“TIM_ClockDivision”的分频比来定/ E3 q) t# W% t" V, f  ]
  10.         unsigned long period = time_us*(SystemCoreClock/1000000) / (prescaler * clkDiv);/ Z) L  g! e3 F: }. Z: K" `6 o
  11.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    * Y1 V; p* [0 j- f) W9 S" Z
  12. 4 i! U. `8 w8 i4 y3 H
  13.         TIM_TimeBaseStructure.TIM_Period = period;
    - _. N! e% G+ L0 ~! p4 c
  14.         TIM_TimeBaseStructure.TIM_Prescaler = prescaler - 1;        //时钟再分频,会影响TIM_Period的效果" x! K7 u& U; i3 g
  15.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;        //时钟分频,会影响PWM的计数个数. F5 q. O8 ~% \
  16.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;/ B$ A$ f! \) ^: G
  17.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);8 I! b. o3 t: ]; }. L" h0 O2 |
  18. $ z/ E# |0 n. |6 @# a- M  ]
  19.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
    + u2 w0 D1 ?% g8 Q$ |1 \
  20. 2 ~" B1 a1 K9 }& N9 O
  21.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;- ?: {) q" i' Y' I( P) @
  22.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;. n$ r0 G; {$ i! V
  23.         NVIC_InitStructure.NVIC_IRQChannelPriority=1;
    - g# M1 e& e1 I" w% \
  24.         NVIC_Init(&NVIC_InitStructure); 7 ~, N1 f+ {- D: n( ]4 T% P

  25. / e3 T' S, ?6 p0 P: Z& T6 E; z
  26.         TIM_Cmd(TIM3, ENABLE);        , I; ~5 l7 @. s2 L( p+ \" b
  27. }9 y# Q( r; n( {0 {6 w5 k
  28. 8 n3 X2 C# _# ^  J" _7 n' V
  29. void TIM3_IRQHandler(void)   //TIM3中断
    ; b. x/ h6 {5 }
  30. {6 Q! M. Z! f; t8 S
  31.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
      t: q' B$ G+ E, i
  32.                 {         
    2 w# x+ R* U! }6 q" @. Z
  33.                         
    & s- t. q0 r7 d; v; y6 h1 A, A
  34.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志
    1 f" U4 s( q1 G$ X% ?0 X
  35. 5 d8 u! M# Y4 Z5 O: [$ [/ x0 }
  36.                 }
    * E9 y8 v+ J# I; Z
  37. }
复制代码

/ b) Q  M8 d# h* d9 \0 l.h文件
1 p  h( a: Y6 Z# t" T6 [7 W. H
  1. #ifndef _TIME_H+ M* h  Q6 t7 h& ^+ t8 z3 z5 j
  2. #define _TIME_H, f  }; f# O& N6 V0 x3 G
  3. #include "stm32f0xx.h"" F1 R' b% P4 ~+ x+ Y

  4. - N: s- x" y7 j# G2 @6 I% \$ X( l
  5. void TIM3_Int_Init(uint32_t time_us);
    8 F% @' o1 q6 b
  6. $ N2 y/ C( ~2 F6 j) r: b5 B) P0 s" O: e
  7. #endif
复制代码
, n8 Z1 C2 Y8 B* y3 }5 S/ O

0 O$ e& m, |; Z. Q0 e$ w
2 J% \0 [# g( q/ l' K9 \9 W) D) I
收藏 评论0 发布时间:2021-11-25 15:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版