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

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

[复制链接]
STMCU小助手 发布时间:2021-11-15 22:02
频率2.097Mhz , TIM2定时1s触发一次中断! U6 S: C3 m) X; \
1.TIM2初始化( t8 T! P0 Y! B; ~2 a! V8 R: N" p
HAL_TIM_Base_Init>HAL_TIM_ConfigClockSource>HAL_TIMEx_MasterConfigSynchronization
7 W  B" ~" C) B. \/ s/ b  ^5 b
4 _+ b" Z( ^0 }* p0 `
  1. /**& S, q; }8 P: i
  2.   * @brief TIM2 Initialization Function+ `% D5 G$ @( l) t) z0 d/ S
  3.   * @param None2 A# _0 H( r0 Y  X
  4.   * @retval None
    9 {/ Q( w) w/ E( t8 d3 W
  5.   */# W: n+ w9 I. j5 X3 q
  6. TIM_HandleTypeDef htim2;
    3 J: G1 l# S. K1 g
  7. void MX_TIM2_Init(uint16_t time)
    , F, L# U6 p- q+ W8 i
  8. {
    0 V  M- f7 w2 L; e  d* f% }% E
  9.   TIM_ClockConfigTypeDef sClockSourceConfig = {0};
    . ^8 j) B, Y6 M) d
  10.   TIM_MasterConfigTypeDef sMasterConfig = {0};+ ?1 b1 ]6 F' T: Z" a
  11. - p+ P3 m. l% n
  12.   htim2.Instance = TIM2;9 e! b. U2 ?; l3 @8 T6 n; K; g
  13.   htim2.Init.Prescaler = 2000;: L# r, P+ ?$ d# L, ?: @& E
  14.   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;0 E6 T- i' P3 b$ E5 d' i% E
  15.   htim2.Init.Period = time - 1;8 w* q) R, ]# I
  16.   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    / X3 p1 z, F" O9 y2 Y  ?0 i
  17.   htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;. ?- E; G( m7 R( b
  18.   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)4 m9 j5 \% L# v5 K1 p3 d- R  U9 q1 ~5 D
  19.   {
    7 o+ n4 |2 [8 ^% G( o7 r
  20.     Error_Handler();; A6 t+ \8 B! C( N; P1 j( Q
  21.   }
    9 s3 E  t  y* K( R, m- g
  22.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;  C& B1 i2 I3 S
  23.   if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)" z7 z( y) E% f3 w- f2 p+ V% U
  24.   {
    9 ?- c0 i- t- F' O7 W! J
  25.     Error_Handler();
    7 d. ^7 r7 G6 j! _' x2 [
  26.   }* I: I' q! I+ d" ^$ V$ y
  27.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
    ( p/ R7 u" s3 O, p# A$ y5 \: D
  28.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
    5 Y7 \- @% W" Y- d' {+ i
  29.   if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK), w1 y9 ^+ ~2 b. |! S7 @% d0 A
  30.   {
    8 W, \; D: E. H- P
  31.     Error_Handler();
    3 @5 W4 e. n5 A. L8 f- g
  32.   }0 p  e2 z7 F% v/ }& j
  33. }
复制代码
- c1 X3 X1 Z0 i3 M# i  C5 I/ h
2.TIM2 中断处理函数5 b/ Y' y- v( ^% S. j# Z3 T( t3 C
  1. /**
    $ Q  s$ A! R! o# M$ ]& \
  2.   * @brief This function handles TIM2 global interrupt.. m0 Z5 F$ {* d6 E: ^8 i
  3.   */2 s$ ~* u* U" G2 m& {
  4. void TIM2_IRQHandler(void)4 w0 b7 p3 l5 d" w+ ]! Y( u" H
  5. {8 a. W: q5 W9 T/ V" q
  6.   HAL_TIM_IRQHandler(&htim2);
    ) B. I6 q7 `( E' b0 i' _
  7. }
复制代码
8 v" ]8 i% P" ]
3.主函数main

( o* M) m+ Q" S; k: f
  1. int main(void)1 H1 f% k+ d, v
  2. {
    & R4 H" G/ S' z7 K3 A; @$ r8 w
  3.          HAL_Init();4 j" F* g: b: ~- }
  4.     /* Configure the system clock */
    & s- C9 \$ [, Q" J5 I
  5.     SystemClock_Config();2 D  N1 N2 w! R1 y+ Z
  6.     LED_Init();//LED初始化. p3 ]6 U  n- \. k
  7.         MX_TIM2_Init(1001); //1s一次
    7 l# h* Q& q  q' G" ?
  8.         HAL_TIM_Base_Stop_IT(&htim2);
    ) N! m5 k- g: @$ G/ Z- `7 o) W$ c
  9.         HAL_TIM_Base_Start_IT(&htim2);
    6 X* V, U4 k5 Y
  10. # {% d* b7 ^7 K6 C3 T5 T1 i3 l
  11.         while(1)) I* D. e9 Q: D7 B. @
  12.         {}
    7 x6 H/ g! e. {
  13. }
复制代码
; B' P9 y' O7 s/ ]
4.TIM中断回调处理函数
& S9 c4 Q' {1 H) W4 o# w) J- [" n
  1. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)% {* r5 Y; D; ^% V3 ^1 g
  2. {0 r0 j( o5 \2 q6 `" Q# e
  3.     if(htim == &htim2)
    ' L0 O. [" x6 h9 {
  4.     {
    * ^+ R% b" U3 [0 `
  5.             HAL_GPIO_TogglePin(GPIOB,GPIO_PIN8);5 a# X# h  H3 @
  6.     }9 b) c2 W9 ]. @: H6 {
  7. }% F2 t4 r) @- D0 N/ |
复制代码

; g$ m" G9 l% ^6 F# a
收藏 评论0 发布时间:2021-11-15 22:02

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版