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

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

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
以下源码以定时器3为例,其他可以以此类推
( ~: U) ?4 C) k9 w
+ C8 |, j- n5 q1 ]8 l.c文件. T" _* b" E) y/ u' J  p% }
  1. #include "Time.h"
    " G) Z- V6 t& D* a
  2. 2 ^1 H& o" g8 y8 ~5 j7 Q, ?
  3. void TIM3_Int_Init(uint32_t time_us)& _4 q1 i* V! ^( d3 ^  [( W0 K
  4. {
    3 Q+ {8 Q3 f# X
  5.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;: a2 g5 [) e" K8 i7 I
  6.         NVIC_InitTypeDef NVIC_InitStructure;# L* m% X; B$ v

  7. ' R  a/ M! c2 m' g9 x' ]
  8.         unsigned char prescaler = 1;
    + O- e4 u9 n1 ?4 a6 _4 J& n
  9.         unsigned char clkDiv = 1;//根据“TIM_ClockDivision”的分频比来定9 {9 s. B! f7 k/ k, [! X$ s' r' f
  10.         unsigned long period = time_us*(SystemCoreClock/1000000) / (prescaler * clkDiv);9 P/ H/ F  F( i- }) z& q1 Y" z
  11.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    9 S  _0 D2 U/ g0 ?; L8 P
  12. 4 H$ h2 {* A8 a) F; y! g
  13.         TIM_TimeBaseStructure.TIM_Period = period;
    7 x; _" l/ t0 z; M- y
  14.         TIM_TimeBaseStructure.TIM_Prescaler = prescaler - 1;        //时钟再分频,会影响TIM_Period的效果
    ( S2 m+ p/ I+ u" `- b& h- T
  15.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;        //时钟分频,会影响PWM的计数个数
    . z2 w' q$ H5 f& }: B
  16.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;( U7 }5 c- [0 U! f4 k7 c* B
  17.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);+ a; o8 ^: n. e; w4 `5 n
  18. 6 h% q* b$ Q. {$ o5 `1 |& J
  19.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
    ' V+ P; B4 R9 }% J# J
  20. + r" f& c% k5 ?5 h
  21.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
    + d( Q& ?7 D+ U3 q& G) r
  22.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;6 l6 ^; k+ r7 H* X, I
  23.         NVIC_InitStructure.NVIC_IRQChannelPriority=1;
    - [# _- e6 K& e, y
  24.         NVIC_Init(&NVIC_InitStructure);
    3 O  F' Q) k- J$ g" o

  25. 2 `- N, z6 W7 L/ a* @7 h! p
  26.         TIM_Cmd(TIM3, ENABLE);        ) x& {% `$ ~( M, Q5 C' L" e0 b
  27. }
    2 S% u+ h& ]! {8 Y$ E6 V/ Y

  28. 3 a; T/ O; u8 V/ w2 R
  29. void TIM3_IRQHandler(void)   //TIM3中断
    % ]! d! \0 j. Z+ p) \
  30. {
    0 H0 T0 u9 S' A
  31.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否; L$ J/ a6 Y' w3 I. J+ x- a, E3 \
  32.                 {          ' a& d9 s# ^. ^. k2 C1 I
  33.                         + m3 Y; f7 r5 q9 n) ?3 p4 i4 `
  34.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志
    6 x3 C6 g3 P" {
  35. 4 O% [* E$ ~/ h0 a
  36.                 }1 {3 l7 Q/ F0 M$ ~& d' n9 X- i
  37. }
复制代码
0 g% I* h& V. S8 n
.h文件. @/ E, z8 @' U2 l4 I+ l
  1. #ifndef _TIME_H5 u. p7 w  N8 y$ G! |: J
  2. #define _TIME_H! V8 T5 P+ C9 O: X9 t2 _4 U
  3. #include "stm32f0xx.h"
    9 M0 i6 V* g- I3 M: ^  x  |

  4. " Q: l* E" {. S# Q" O9 ]2 k8 _/ s
  5. void TIM3_Int_Init(uint32_t time_us);/ T2 U8 ]4 a- O8 T2 z  e3 M

  6. 9 ]% a4 P* _, X8 H- Q: T0 x. Q
  7. #endif
复制代码

# `$ `, m8 o4 k* r3 u# D6 M$ T8 o3 W& B) F2 u$ q( w' D
! _) {$ c+ N0 y& ^. h
收藏 评论0 发布时间:2021-11-25 15:00

举报

0个回答

所属标签

相似技术帖

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