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

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

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
以下源码以定时器3为例,其他可以以此类推2 M+ \8 w+ [9 f% l+ d0 U! G9 N

: F6 q# {* L# W& m5 M$ }* i+ _.c文件
5 p6 s( G8 C8 M+ u0 q
  1. #include "Time.h"
    % ~0 i# ]6 d. c7 `

  2. 5 ?0 F3 w. @1 Y
  3. void TIM3_Int_Init(uint32_t time_us). X/ |) M3 H, Y
  4. {
    5 u0 e9 A/ z* c2 @
  5.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;5 J& _; K2 u5 j+ ?$ I
  6.         NVIC_InitTypeDef NVIC_InitStructure;
    ! Y% r- N, o! m! q, M: i7 v4 e
  7. 2 A3 L$ U: V1 I
  8.         unsigned char prescaler = 1;
    4 r# z  \* ?( s- l' O) T, {
  9.         unsigned char clkDiv = 1;//根据“TIM_ClockDivision”的分频比来定
    + `! d: [$ M5 p( @( c/ h
  10.         unsigned long period = time_us*(SystemCoreClock/1000000) / (prescaler * clkDiv);+ z' g9 ?7 j' ~5 y
  11.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);1 U0 M* [$ X4 w5 N$ E) P' H

  12. ) J% \0 u. {8 F" {' o
  13.         TIM_TimeBaseStructure.TIM_Period = period;9 d4 O+ l7 u! n% b8 ]
  14.         TIM_TimeBaseStructure.TIM_Prescaler = prescaler - 1;        //时钟再分频,会影响TIM_Period的效果% ]$ ~3 ]( A6 B4 s+ ]% d
  15.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;        //时钟分频,会影响PWM的计数个数/ w, t* K0 b9 s
  16.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
    2 e! g$ X7 d5 m* ]. a
  17.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
    & G$ I0 p& H7 z
  18. 0 [" r' X; m8 y9 m3 v# i* g2 X
  19.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断& G: n1 i2 ?! n* `" ]! K+ P$ c" ]& _
  20. 4 a+ b( J8 N% M( x/ s) R
  21.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;# p! C+ H+ \9 `+ m" ^9 Y; H
  22.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    8 E6 ^- J; e/ p1 }( b
  23.         NVIC_InitStructure.NVIC_IRQChannelPriority=1;
    / y# o& f$ G- P3 c; q* T, c& M$ t' v
  24.         NVIC_Init(&NVIC_InitStructure); 7 H8 u6 ~. S! A; W7 E: l
  25. " Y. M8 X# u8 ^
  26.         TIM_Cmd(TIM3, ENABLE);        
    1 {8 F4 j5 T9 T% Y/ ?
  27. }
    ) R  b8 I. |  ~1 p" c/ Z; o
  28. 5 }9 N8 O* a/ M6 g$ F4 C! P+ V2 i) M
  29. void TIM3_IRQHandler(void)   //TIM3中断
    1 ^; }$ Y2 X! U
  30. {
    7 ]5 E1 O8 Y0 ~2 r+ ~8 b9 t
  31.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否8 @" W2 T1 p/ g6 t% ~8 |
  32.                 {          : ^0 }; c2 V' c, J6 F% l! }
  33.                         + ^) U& @2 @: o9 V
  34.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志 , p! P4 w& \: \& a2 x# e

  35. . T' i. p$ y2 N% o2 {, l( V
  36.                 }0 C/ h. f- S' L+ K
  37. }
复制代码

) k. l" |$ E6 r8 B. @.h文件
4 z. s. E7 @  C' Z  r5 W
  1. #ifndef _TIME_H! m) z# u' k; R; S+ i& Z
  2. #define _TIME_H* q( q/ X8 d( q1 `
  3. #include "stm32f0xx.h". v3 V) J% x% X, W
  4. - ]: m  \; O/ i; M( {; j
  5. void TIM3_Int_Init(uint32_t time_us);
    # q% H: d. B. d$ |/ ]
  6. : G% a3 V6 n$ h- j
  7. #endif
复制代码
) G9 U/ n, }6 e+ I7 a
7 a+ v: R+ D4 K: T6 b0 z! l! e+ N
$ f: X% \  P, T9 A
赞 收藏 评论0 发布时间:2021-11-25 15:00

举报

0个回答

所属标签

相似技术帖

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