请选择 进入手机版 | 继续访问电脑版

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

【经验分享】STM32L0系列之【TIM通用定时器】

[复制链接]
STMCU小助手 发布时间:2021-11-15 22:02
频率2.097Mhz , TIM2定时1s触发一次中断
! ^6 u: ~& o& \9 O* o6 D1.TIM2初始化8 r2 I/ f( p. S/ N
HAL_TIM_Base_Init>HAL_TIM_ConfigClockSource>HAL_TIMEx_MasterConfigSynchronization
7 L9 J! t4 [" K
) F' B4 q3 r5 ~5 j" e
  1. /**3 _. J3 K" B3 t
  2.   * @brief TIM2 Initialization Function
    7 c8 ^( I: x! `% V) Y! n
  3.   * @param None3 [: s# ?* f5 u( }6 n8 u% I, A
  4.   * @retval None
    * w- m( y; K" D  ~$ S1 B9 v
  5.   */
    " M6 w9 f; E5 u% ^- _
  6. TIM_HandleTypeDef htim2;( b* Q, y& Q. Y7 Z- V
  7. void MX_TIM2_Init(uint16_t time)
    9 [( r: B% e) E* H! x" h
  8. {6 r- h# ^7 |6 A+ |0 D& A
  9.   TIM_ClockConfigTypeDef sClockSourceConfig = {0};7 C9 M) k6 q' B4 A, O
  10.   TIM_MasterConfigTypeDef sMasterConfig = {0};
    ' V: b/ Q  m5 p) A! u
  11. % a# F. U( t- g; t$ d/ D
  12.   htim2.Instance = TIM2;
    6 i! C! S. a  F% H
  13.   htim2.Init.Prescaler = 2000;/ _. g2 N" [8 F" i
  14.   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
    8 d2 Z1 o9 C% z
  15.   htim2.Init.Period = time - 1;, O3 c; e% E5 M( L3 e! q
  16.   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    " p8 m/ D! O4 Y
  17.   htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
    $ ~, c1 U# N' s: Z( }% Q: e9 {
  18.   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
    3 N* m* s8 i0 N% j) [6 ]
  19.   {- c' }; @+ B, D- Y* ^! y
  20.     Error_Handler();( w6 _/ W0 @3 Q7 j7 w+ b! {# O
  21.   }# M7 ?+ H" |# _5 B0 s
  22.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
    9 z* O! u5 E" c2 f( M% L
  23.   if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
    ( |! j: C2 ~2 C
  24.   {5 h* P; T9 v0 I% i* C
  25.     Error_Handler();
    % W  X, a6 w4 e0 X. A7 D1 S
  26.   }. I2 f1 l6 b$ e9 }* C( x0 k
  27.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
    5 K+ g# j4 V$ u1 W8 S1 y/ e- Y* T
  28.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
    ! G% ]" o! u6 M! ^  [
  29.   if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)5 W; R; h, E$ P9 A0 s
  30.   {* Q+ g/ p" s# P* I  j
  31.     Error_Handler();
    9 a# t2 S8 U( m7 |$ k% [# Z- v
  32.   }
      t/ x# {) x3 j2 J$ s" V( c8 s
  33. }
复制代码

/ y1 Z- i' H1 _& l% [8 @2.TIM2 中断处理函数9 ?7 V) n# p0 y# @- R
  1. /**
    : j( K0 x" a8 L- J; n
  2.   * @brief This function handles TIM2 global interrupt., |2 w4 K3 _1 [5 ]) V" G* |
  3.   */
      t5 r8 Y$ m/ W& E# T# m# e% A
  4. void TIM2_IRQHandler(void)
    1 U/ f) ^0 g0 S; ]$ h/ h
  5. {
    % b' p, x+ h8 g: ~5 U+ u
  6.   HAL_TIM_IRQHandler(&htim2);6 N! d- w* ^; h' `' r* \
  7. }
复制代码

( D' P6 A) Q) Z3.主函数main

# L8 {6 \  O& |8 H! ^8 Y
  1. int main(void)
    # u, W' z; W" X4 u2 O
  2. {9 M' s+ F/ H, f+ ]2 Z
  3.          HAL_Init();
    ( z# P+ L4 X; A# m" A
  4.     /* Configure the system clock */, f% ^5 ~% [+ n6 z
  5.     SystemClock_Config();
    ! p" ]' ~6 |' n  }. K; e+ ]6 l/ e2 B
  6.     LED_Init();//LED初始化$ m  Z$ M9 @% f
  7.         MX_TIM2_Init(1001); //1s一次
    - X& G' N8 ~) ]* b" t) S
  8.         HAL_TIM_Base_Stop_IT(&htim2);
      j9 \% t' X+ G9 w5 F- {+ v7 ]/ Q
  9.         HAL_TIM_Base_Start_IT(&htim2);/ A$ F0 l& W8 F3 f' K
  10. 2 j  |5 P/ I1 A/ l; w
  11.         while(1)
    9 v6 [; R- A5 @& Z
  12.         {}
    0 f, @  y: w" d
  13. }
复制代码
1 F* M6 n2 y9 a8 i, V7 h
4.TIM中断回调处理函数6 i2 ?7 Q) T* S6 Y, @! ~& N4 x
  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
      E# j4 N; M) }- ~
  2. {
    8 P1 s% W. V2 B7 g! q
  3.     if(htim == &htim2)
    4 S! N, n6 A4 ^7 F
  4.     {
    ! P7 G3 D" C5 a- d
  5.             HAL_GPIO_TogglePin(GPIOB,GPIO_PIN8);; k: o. P+ D# |; d/ r4 S+ g4 n
  6.     }
    : m4 g/ j! Y- Q; \& f
  7. }
    1 N/ p8 N6 ~+ H6 w! z5 L, M2 S  O
复制代码
$ A* \/ t. g0 E
收藏 评论0 发布时间:2021-11-15 22:02

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版