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

第四章:STM32CubeMx 定时器基本使用方法

[复制链接]
STMCU小助手 发布时间:2021-1-13 15:30
第四章:STM32CubeMx定时器基本使用方法
第一步:
具体配置如下图:激活需要使用到的外设定时器,当系统时钟频率为64MHz时,我们希望1MS发生中断一次;就可以把时钟的预分频系数设置为64-1;计数周期设置为1000-1;计数方式为 Up 向上计数,此时得到的中断频率为:64,000,000 /64 /1000 = 1MS = 1Khz ;
4.1.jpg
第二步:
可以根据自身需要在NVIC 中断控制器中配置中断响应优先级。
4.2.jpg
第三步:
代码分析:
  1. 先看TIM7的初始化函数:static void MX_TIM7_Init(void)
    " k$ I8 A' g# \0 d" }: \
  2. : m2 @5 _1 A/ ^, A2 [
  3.   e* z" J" {6 U0 ?4 n) e* ~
  4. static void MX_TIM7_Init(void)
    # v: l" q5 O0 w1 D) z$ ?
  5. {4 Z, `4 j0 f$ d

  6. / [: f, }" _- ^2 I! y% \
  7.   /* USER CODE BEGIN TIM7_Init 0 */) z0 F5 _3 \; `7 f, W9 L
  8. 4 y1 M6 I# Y; r/ ?: L
  9.   /* USER CODE END TIM7_Init 0 */2 n; I3 @/ R- {) u

  10. 2 Y0 d; l; i1 E. V% o: O1 D
  11.   TIM_MasterConfigTypeDef sMasterConfig = {0};
    8 L- \5 r0 `) D+ ]( S
  12. 4 f, q6 {1 S# U( T% Q* h9 d
  13.   /* USER CODE BEGIN TIM7_Init 1 */% E% T% B) \, H5 t

  14. ; y. r3 Q5 `% {
  15.   /* USER CODE END TIM7_Init 1 */
    % _$ g4 U  g; I
  16.   htim7.Instance = TIM7;
    2 \7 w5 ~; I& R/ _: u) u8 ?4 w% e; ]" p
  17.   htim7.Init.Prescaler = 64-1;
    9 k7 z7 P% P  f9 G) A4 ?" h! o: M! m
  18.   htim7.Init.CounterMode = TIM_COUNTERMODE_UP;; e) [0 A- z6 }) \
  19.   htim7.Init.Period = 1000-1;
    ! v$ A- g- t* Y) a0 ?8 M# a, ]
  20.   htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
    5 J6 G' h! S+ I
  21.   if (HAL_TIM_Base_Init(&htim7) != HAL_OK)2 l/ D; W/ n& @$ i. S3 {
  22.   {
    , m% K1 m/ J3 ^+ t9 H5 p8 Q( e: `
  23.     Error_Handler();
    . x: k! v" d' J
  24.   }; w& k. u- W) K& E, X+ S- b3 }
  25.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;8 v; n: i& D+ N. @3 q+ L
  26.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
    8 F) l1 ~8 o2 N# }8 Q# B2 ~
  27.   if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK)
    ) a5 b/ S) u4 q; g
  28.   {
    , {8 F7 a0 u% g) z; a6 h; Y0 I
  29.     Error_Handler();8 I9 [2 I. R/ |. S/ d9 O2 i3 p
  30.   }8 G( z$ g- g8 v. C5 S3 k
  31.   /* USER CODE BEGIN TIM7_Init 2 */
    3 S2 Q' N2 r* Z
  32.   4 ]6 @3 r) K- I- R/ }0 S; ^
  33.   - i+ ^" u& F, ~
  34.    //在这这里添加这行代码,意思是初始化完成便开启定时器中断计数
    5 U6 }1 i+ a& Q$ }, U( Y
  35.     HAL_TIM_Base_Start_IT(&htim7);   
    6 @  G$ U8 C( [( B8 e+ s4 |
  36.    
    $ ]! q6 @+ ~$ b$ v4 d
  37.     ; F6 G+ d/ W. e. V" S/ k# e
  38.   /* USER CODE END TIM7_Init 2 */. H' o% [' R' Z8 _
  39. }
复制代码
  1. /* USER CODE BEGIN 4 */
    ; |. f9 l8 @7 ~+ x$ z3 r
  2. 9 q" ]5 E  @( {' |
  3. //在BEGIN 4 中添加定时器中断服务函数+ ^: }. u9 m8 v6 R# T5 f, N7 H3 B6 t

  4. - w! Z$ O. \& C) L5 J; R& P
  5. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    5 E  L# P8 c3 g9 s
  6. {& v1 U9 b* g6 O
  7.   if (htim->Instance == htim7.Instance) //如果是TIM7响应进来的中断
      d( c4 ~! D' R4 o3 e
  8.   {
    ) E6 l: f7 q+ k' L' r7 E$ B
  9.     MS ++;  //前面配置中断更新时间为1MS,那么这里进来一次MS加一次
    2 Q0 [6 y9 U  o; E; d" y. [
  10.     if(MS == 1000)  //当MS加到1000时,即1S3 ~# H' I4 b6 Q$ g+ A6 R' s
  11.     {4 Z) J" N7 z0 }/ u2 A
  12.       HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);  //即1S LED翻转一次0 t' j7 E6 H6 \! B0 C2 f' v
  13.       MS =0;  //MS用完后记得清0' S, ]* b( X# ^; y, y7 r3 Y
  14.     }
    % _- @8 H6 C5 d/ q! F
  15.   }
    ! ]/ [4 }2 w; t+ ~& q. \
  16. }: g& `4 z7 M! V. ?
  17. 4 K! K5 y, c6 C, ~- F
  18. /* USER CODE END 4 */
复制代码
; ~; A7 x+ n* @
如果能理解到这里,恭喜你已经学会了定制器的基本操作!
文章出处: 电子爱好者
  i& ?$ }  B4 T7 g9 v& {
收藏 评论0 发布时间:2021-1-13 15:30

举报

0个回答

所属标签

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