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

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

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
以下源码以定时器3为例,其他可以以此类推
" v( e9 N* t0 {* g; d9 u0 e) L1 U
.c文件6 e$ x* E) ^$ G8 S8 J6 f! F7 D9 q
  1. #include "Time.h"! n7 p! \, I# ~; Q% P+ q
  2. ) S8 r9 Y# u: m" Z0 Q6 I
  3. void TIM3_Int_Init(uint32_t time_us)8 j" S# f: u4 {
  4. {
    1 M! p9 a& V* N9 U) `' S% X
  5.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;% Q/ W: N* I( [- R# F6 i
  6.         NVIC_InitTypeDef NVIC_InitStructure;
    3 A* A' a5 h/ W1 S4 Y
  7. " l3 s: Q9 r0 m
  8.         unsigned char prescaler = 1;! H# ]( s8 O5 r9 l: g8 k7 _
  9.         unsigned char clkDiv = 1;//根据“TIM_ClockDivision”的分频比来定+ u4 A& j; B4 r
  10.         unsigned long period = time_us*(SystemCoreClock/1000000) / (prescaler * clkDiv);. n3 k0 s: Z* i
  11.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
    . V2 E5 v) B: d5 h& z' U, k+ S

  12. : o! \4 `) b! Y1 V( Y# G
  13.         TIM_TimeBaseStructure.TIM_Period = period;  \' B6 b0 i) R7 d: x
  14.         TIM_TimeBaseStructure.TIM_Prescaler = prescaler - 1;        //时钟再分频,会影响TIM_Period的效果% G' j: z) Z4 j% d& }7 I
  15.         TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;        //时钟分频,会影响PWM的计数个数
    " q" v2 V' U5 f
  16.         TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
    / }# |' N4 |! D% {5 {! ~
  17.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);- S* n- V  ^+ I6 t0 o

  18. 7 W4 F0 \* b1 w' r$ h% L. V
  19.         TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
    . T* i; I+ H, H6 q" @3 \
  20. 7 k1 z$ N, G9 K6 d7 Z) c3 u0 q! f9 V
  21.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;# D0 ?# A/ a/ s% g8 e# G
  22.         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    ' `, G; S- ?0 n
  23.         NVIC_InitStructure.NVIC_IRQChannelPriority=1;5 X/ d6 V) e% W0 h2 ?" v
  24.         NVIC_Init(&NVIC_InitStructure); 8 B* H# z& k2 a+ ~" r3 ?4 S& B
  25. 5 d1 J% L; a/ S5 X: O4 r
  26.         TIM_Cmd(TIM3, ENABLE);        8 ^6 ^" ]. D- h( t0 C; O' j' R0 q
  27. }1 x$ u0 B3 D' G7 I' s8 t- ]4 W5 ]

  28. $ a2 F/ k+ h& Z" `; A' Y
  29. void TIM3_IRQHandler(void)   //TIM3中断4 u; o8 s. ]6 A2 I- w: F
  30. {
    1 T4 g, E" O: t  u3 a" z! L  M
  31.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
    , {+ o  l8 {. n9 v' L8 u" c% t. ~( M
  32.                 {          - G+ {, B; X4 T( O6 b4 a+ j
  33.                         ' k$ s* Q) x% h* @, T
  34.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx更新中断标志
    . K6 h; k6 q4 M2 X
  35. ! c9 k( F6 `' o
  36.                 }
    7 x+ R, K( @& ?. f+ m
  37. }
复制代码
/ J' N1 N, W! L" H- ^+ M( g4 P. a, g
.h文件) X! z1 ]5 [0 {
  1. #ifndef _TIME_H
    9 B! X- x6 q2 _
  2. #define _TIME_H1 |0 S3 b) C3 L) x+ h8 s, E
  3. #include "stm32f0xx.h"+ L: l" g2 Q/ n# K. z% t

  4. , Y) D) T2 c! |( n* x  a2 B
  5. void TIM3_Int_Init(uint32_t time_us);
    # v, ]0 _3 b4 u) j/ S
  6. 4 O" W9 h9 f& ]% r1 b6 W
  7. #endif
复制代码
) R9 b, w) P# _7 r  x3 @2 k3 f
3 K* E/ f5 G' \2 ^/ t. L2 r: v

8 T9 {* ?! A1 i+ N
赞 收藏 评论0 发布时间:2021-11-25 15:00

举报

0个回答

所属标签

相似技术帖

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