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

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

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
以下源码以定时器3为例,其他可以以此类推" T2 O: ^6 t+ W6 n1 u7 q- r1 U+ D

3 |* `6 a) w: b7 Y- y& E.c文件
: g* T6 ]. ]- m7 W$ W3 P
  1. #include "Time.h"5 F3 A2 ]$ a1 p% d  v0 z

  2. 0 P5 R/ k% Z0 K8 k/ S" t
  3. void TIM3_Int_Init(uint32_t time_us)
    4 ?( ?; C' }) c# F& }6 }
  4. {
    - K0 O4 D, x& L) C
  5.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    , I0 S' q0 `$ X6 L6 Y
  6.         NVIC_InitTypeDef NVIC_InitStructure;
    ' e/ S( j) m  Y

  7. & e2 `4 W7 j8 y! L9 q, {5 N
  8.         unsigned char prescaler = 1;2 e1 m+ x& I5 _) P# X# q
  9.         unsigned char clkDiv = 1;//根据“TIM_ClockDivision”的分频比来定
    8 @3 s0 J# E4 ?1 D; z, Q
  10.         unsigned long period = time_us*(SystemCoreClock/1000000) / (prescaler * clkDiv);& k) d- X2 m; b- y% V5 ^
  11.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);( z/ C+ J: ?: V8 I+ A+ z0 p

  12. ( S4 [  Y' u& @8 J) Y) C2 L, A
  13.         TIM_TimeBaseStructure.TIM_Period = period;* o( [5 |7 ?$ l; \% \
  14.         TIM_TimeBaseStructure.TIM_Prescaler = prescaler - 1;        //时钟再分频,会影响TIM_Period的效果
    + I- [' U5 h4 ~, D; p
  15.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;        //时钟分频,会影响PWM的计数个数
    , Z9 \5 O# N) J0 \/ u
  16.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
    & U0 ~* A2 H. [& A3 K9 B
  17.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);/ i$ g$ {, i7 Z- J

  18. 3 B! f- t  N7 r& w% _) t, l- m4 w8 h
  19.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
    2 y: j4 e& v" J0 V  ?
  20. / ~* m3 C  H6 y8 S7 V6 {" C
  21.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
    # v1 j% F( y9 Z, }& Z! E% K( R- T7 ~
  22.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    ! [7 I! Q) ]$ ]6 G9 h/ _( a' L
  23.         NVIC_InitStructure.NVIC_IRQChannelPriority=1;
    ; T3 S3 T5 }+ [' G6 g0 V( n
  24.         NVIC_Init(&NVIC_InitStructure); 9 U# B0 I* E0 l  H6 k) ^
  25. 4 U; i2 }/ B/ G% d& H! |
  26.         TIM_Cmd(TIM3, ENABLE);        
    ; @+ a+ q, p4 X( z7 G
  27. }
    5 |4 L9 _' M( Z' w! f
  28. * g6 [! G2 V. c1 @$ g0 {
  29. void TIM3_IRQHandler(void)   //TIM3中断
    " _/ O& V) {2 z) B* t* Y& J
  30. {; v8 x8 o: a7 a( A% i: {5 Q% u) v
  31.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否1 M& Y2 j$ m! p
  32.                 {         
    # W/ @6 s+ }3 \+ v5 K" G
  33.                         
    5 [4 X  o6 K0 |: \! Q, ]
  34.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志
    6 s/ ?; ^3 a- l
  35. & ]$ A6 g  S/ l
  36.                 }
    1 R. P9 r4 W3 X
  37. }
复制代码
: y. ^" N2 n; R3 A: \- d5 X& l: O* p
.h文件! m1 b" R* S& J2 s! ?7 H  u/ z4 h" @
  1. #ifndef _TIME_H
    5 I- I" q2 h; s3 r& C2 T
  2. #define _TIME_H
    4 Q9 m8 _% O. ^/ k2 m
  3. #include "stm32f0xx.h"
    . e, }# [7 N1 @" T7 u6 k
  4. + D/ q3 D; W2 d9 \( f# b
  5. void TIM3_Int_Init(uint32_t time_us);
    $ K2 _! Q$ A& U

  6. ! B! {( X5 }: s; O8 @( Y
  7. #endif
复制代码
2 g2 |5 f" X  `7 X+ l5 x$ u$ f
" m( e. L" H- ~$ Y( u  v: F
. G% {  C; r1 D3 u$ G
赞 收藏 评论0 发布时间:2021-11-25 15:00

举报

0个回答

所属标签

相似技术帖

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