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

【经验分享】stm32使用cubeMX配置TIM定时器让LED灯闪烁

[复制链接]
STMCU小助手 发布时间:2022-5-22 21:00
前言
4 \, T0 J  Q! d8 C; D本文将介绍stm32定时器的使用。
( Y9 ^3 [; f/ `
3 Q8 X2 A$ i- n9 ~( Q一、定时器介绍" p! q8 N  o5 X% w: U5 ?
定时器是单片机内部的特殊功能模块。% e/ b4 |- y& d" @, }9 w9 m  X$ L* S
/ S" O/ ]) w2 \5 B
在控制系统中,常常要求有一些实时时钟以实现定时或者延时控制,如定时中断、定时检测、定时扫描等等,也往往要求有计数器,对外部事件进行计数。
3 a6 X3 T# [) W: f; ~, O# |0 z: H
要实现定时或者延时功能,一般有三种方法:软件定时,不可编程硬件定时,可编程硬件定时。/ o2 ~, d% D/ b9 I' v
& i9 F8 M! t0 O# z6 X
软件定时——让软件循环执行一段程序,程序本身并无执行目的,而是通过执行程序延时固定的时间,也就是以前的程序中经常使用的延时程序。这种方法降低了cpu的利用率。% X& B6 U  J7 G) }5 Y6 b

+ e$ m5 Y3 r: K7 ~& U不可编程硬件定时——如外部芯片555 时基电路,通过外部阻容,达到一定的延时功能,改变阻容大小可以改变延时长度。这种定时器取决于硬件,设定好以后不能通过软件更改。
: ?3 [+ U) Q. @+ }! F, u! }% h# C+ {$ i. ]) {& z
可编程定时器——这种定时器的定时值可以通过软件确定和修改,使用灵活便捷。' c5 K0 w3 Z3 o: ~* \7 a

6 W! Z4 ?. ^6 Z1 S! L$ o4 Y. }$ a二、CubeMX配置及工程代码讲解
6 c& j; G4 W7 G9 N+ e, ~% v  W1.CubeMX配置

/ v4 @% I( d  S! m1.选择单片机型号$ U" W  o5 T+ ]
6YQ_U~7O`TN]0C9NE`KA_LY.png
- s0 g3 y8 M6 o0 S
5 p9 b1 x7 O1 ]* {: `, ~% E" ]2.设置引脚功能
/ g4 I3 D5 L7 a" U
5 m# ]) i) K; A/ l- B 5]6~5R092MSHKHLWCCQHB~A.png
% j& I, F! Q1 [) x( k& G5 c& L/ ?, h2 w* s- O
3.选择时钟源# K& Z1 P9 d3 Y3 y6 a6 s
" f  \+ E8 C, w9 p% N
5NV{[K}T)BKKP(X7PMK$}@3.png
" H( e5 V3 `2 m1 b
! ^3 u8 Z& U+ N4.开启Debug仿真
$ ?" F) @' d9 v, R) x( _* D  t4 n+ @3 v6 k
%`TKM6U%[MPOP3X{YNH8CVA.png 2 @* S( w4 W5 c' f+ B) h! a

4 K$ {2 b  I5 n1 r- d' \5.配置定时器
! y6 y* `! `5 ~0 v: E
6 }( ^2 b" `5 J0 G% ^ U9D(YB@U9C1PPCWN}LJS~NH.png ( x) ^/ ?( c8 q, o. Z7 ]8 Y7 y0 i

/ C4 z8 W- f& E9 m" V) y, q ]H4%FXO7YO3W)0JQF818W.png
& U  f0 a/ T+ D* l0 _) E0 U# F7 J6 k7 O  d
定时器定时时间简单计算方法:这里我们时钟树选择的时钟频率是72MHZ,用72MHZ/72/50000就得到了计数的频率然后再取倒数就是我们想要的定时时间了。/ \( C. I, v7 S: n( x( j
9 j* I% _* `* ?% }/ |
6.配置时钟树
7 V( X, c4 U; i  _* m2 x1 w" U6 ?- _0 B
@6Q}6X}1KLYOYNQ)C8_IU17.png
7 x. a6 A) \" h* d. s! Z: A8 Z# @+ P8 g5 \* G9 X' e
7.创建工程8 n4 X, P, R/ g+ T

7 u+ P  u% j8 g* e+ x* [ ]@1U`Y9((R`5D2D~XP%U~(N.png
9 V6 i' t; t4 H" s4 Y% s- \' n4 z4 e1 x7 M  r' w3 t/ ?
2.代码讲解: ~9 G/ `% G% I) @8 H; _
  1. 5 W7 J6 _) j. |
  2. 8 l0 r* P0 U% j
  3.   /* USER CODE BEGIN 2 */" l: d* m0 G4 Y) H2 u/ z6 k1 y) ^$ a
  4.   //start TIM1
    , [0 l+ V; m; `' X; Z) O
  5.   HAL_TIM_Base_Start_IT(&htim1);//以中断方式启动定时器2 L, v  m, l: z. L
  6.   /* USER CODE END 2 */
    ; B; S  d- ^) h6 y

  7. , v* `# I0 P9 ~2 M! R" r( g( J
  8. /* USER CODE BEGIN 0 */
    ; c% y$ @  K2 V! A
  9. //当到达指定定时值时进入中断执行中断任务. Y9 y& i1 h" `+ b1 u5 R" s' s4 f
  10. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)% G4 |- o& _# o0 `. ]: ~
  11. {0 J  U+ b, G7 T- i: Y
  12.   if(htim==&htim1)9 Y' U! T6 K( @9 S8 ]' n" Y2 a
  13.   {
    ) n9 e/ M& n" }* h" M
  14.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);//对GPIO口的电平进行反转(低-高,高—低)
    % `- N" o5 u0 N: Z* ]
  15.   }
    8 W* R; `& d1 M# C& _' g+ S5 M0 Q9 K
  16. }
复制代码
: X; s: |/ t3 T0 C/ @$ @
总结$ |1 m# B& v! Q* _+ q4 J
本文简单讲述了定时器中断的使用,主要就是要注意中断回调函数的使用方法,以及打开定时器的方法。3 x$ s) s+ ^! Z+ j' y& [2 \
" h+ T7 x; I1 Y' E2 D/ \7 ?
2 l4 b) E& M7 z' {3 K7 r, p& {

. a1 o2 t8 N$ A0 S8 |1 x/ b
赞 收藏 评论0 发布时间:2022-5-22 21:00

举报

0个回答

所属标签

相似技术帖

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