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

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

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
以下源码以定时器3为例,其他可以以此类推8 r- V- |. e* W# K3 o' [

& B' a: N+ d2 b6 e& h.c文件
) n/ \( }" l2 C
  1. #include "Time.h"
    ( q* w% p5 I" F2 d/ c! }2 w
  2. ! c' |2 ~' R: c- @. S$ y* N& {) }
  3. void TIM3_Int_Init(uint32_t time_us)
    6 S! A" ~8 y! b' o, P& H0 D- G
  4. {
    2 m% Z  T2 A8 H6 l8 v! a. h$ r
  5.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    , ~8 F, `$ k' n
  6.         NVIC_InitTypeDef NVIC_InitStructure;
    3 O; e( e7 g  x3 k

  7. 9 A9 N9 o9 f  o4 R& o
  8.         unsigned char prescaler = 1;. x/ x. r( s. A4 I' _6 v  b" t
  9.         unsigned char clkDiv = 1;//根据“TIM_ClockDivision”的分频比来定. h9 D' E( ^* U
  10.         unsigned long period = time_us*(SystemCoreClock/1000000) / (prescaler * clkDiv);
      \' ^' E4 S/ y8 o
  11.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);# M" D8 S7 ~: Y# y

  12. 2 H) q3 j$ _% Z7 `! V
  13.         TIM_TimeBaseStructure.TIM_Period = period;
    ) p% X6 \+ m* ~) x0 J1 k& @
  14.         TIM_TimeBaseStructure.TIM_Prescaler = prescaler - 1;        //时钟再分频,会影响TIM_Period的效果
    3 V0 W8 J, g# Z! }6 q
  15.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;        //时钟分频,会影响PWM的计数个数
    6 H5 @# h4 p3 K% s
  16.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
    # X& u9 B) a; M: v
  17.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);' W, j, o0 F3 Y' G% s4 y: ~% l
  18. 3 W. ~$ w# C  p; k( k
  19.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
    & S% a; ]7 D, T) M) i2 Y' V

  20. 3 E6 o0 s) S3 C* k- ~
  21.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
    + _8 l3 g, t  f% L, O- L
  22.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    ' Q/ M* Y2 i/ @! E' `3 k$ {8 G+ @
  23.         NVIC_InitStructure.NVIC_IRQChannelPriority=1;' s; D9 |' R2 q4 `; |
  24.         NVIC_Init(&NVIC_InitStructure);
    - E- N# H, U( r. u$ [+ D: V
  25.   Y9 @3 t+ I: Z  o
  26.         TIM_Cmd(TIM3, ENABLE);        
    ( e! r" s& w" @0 Y: M: T$ P# U0 Y
  27. }6 H6 E" M3 G! r2 g/ b! W

  28. # K$ D1 Q# A% Z, F' L- U
  29. void TIM3_IRQHandler(void)   //TIM3中断
    2 R6 q# h# O5 n9 h1 @
  30. {' q4 L7 f  D" R6 ?9 G  L
  31.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
    + r+ j  I$ j# l
  32.                 {          9 m: V- {( N- q1 ^4 \
  33.                         
    * S! B  z" o& e+ X2 z: o7 D/ e
  34.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志 ) r( P; E  P! r' m& u" J2 U
  35. 5 v0 n4 n$ U6 p$ q' d7 `
  36.                 }
    # \! k4 ~( D$ r: U  N
  37. }
复制代码

2 a7 m1 l# V- R6 P( @7 r' I3 [2 p.h文件' B3 H8 |  m, P/ m
  1. #ifndef _TIME_H/ U1 s0 w5 S2 W
  2. #define _TIME_H: c5 ~) k. r+ H2 p0 f, X, O
  3. #include "stm32f0xx.h". @0 S2 P. D1 h: M
  4. / b3 `5 `# M8 o) D7 `0 |  s
  5. void TIM3_Int_Init(uint32_t time_us);$ X) h. r; V3 |1 e% P) {! D

  6. " N% ~  n7 b9 h; l, O2 M
  7. #endif
复制代码
( V8 R/ z/ Z5 c5 _7 S8 y: y% q
1 i" a* ^5 y" _9 V/ T& v

6 l7 E+ Q) k8 }1 {; I
收藏 评论0 发布时间:2021-11-25 15:00

举报

0个回答

所属标签

相似技术帖

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