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

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

[复制链接]
STMCU小助手 发布时间:2022-5-22 21:00
前言/ m. D$ W$ p8 H2 a. _1 \  F
本文将介绍stm32定时器的使用。) m; w) [- p' w+ i  t

6 ]" Y$ A: A- |+ Z; z. _5 e一、定时器介绍. o/ y, @6 q; m2 t. W% d1 c
定时器是单片机内部的特殊功能模块。
3 T* y% j- G. W! Q# ]4 m; v( n
* {, h1 r# q& M# U* T在控制系统中,常常要求有一些实时时钟以实现定时或者延时控制,如定时中断、定时检测、定时扫描等等,也往往要求有计数器,对外部事件进行计数。
; w9 h% g% [& V* ^9 R" P! J
- s% Q; M, k5 M* W要实现定时或者延时功能,一般有三种方法:软件定时,不可编程硬件定时,可编程硬件定时。
/ N" {+ U2 a8 |; @4 _3 ]; b! n; r+ u4 O$ y* K4 m
软件定时——让软件循环执行一段程序,程序本身并无执行目的,而是通过执行程序延时固定的时间,也就是以前的程序中经常使用的延时程序。这种方法降低了cpu的利用率。( ~) C; \& g" L$ N
/ z! U$ l- B3 d9 }& K/ K6 n
不可编程硬件定时——如外部芯片555 时基电路,通过外部阻容,达到一定的延时功能,改变阻容大小可以改变延时长度。这种定时器取决于硬件,设定好以后不能通过软件更改。9 b" u) S; k3 H2 b7 ]; M

. i. G, X5 J+ h1 D可编程定时器——这种定时器的定时值可以通过软件确定和修改,使用灵活便捷。$ l, b2 g- z2 R0 E% b9 a9 Q
1 G2 l$ O& P3 U9 a, V+ n
二、CubeMX配置及工程代码讲解
- q5 H% y/ p9 q" ?1.CubeMX配置

0 ?% t/ X0 H7 J. b/ J# h( ?1.选择单片机型号
% I) A, m4 r7 ]6 B, v- n 6YQ_U~7O`TN]0C9NE`KA_LY.png
, G  u4 |$ H1 n3 v1 j4 ^8 J5 Y( ?) Y( O/ P1 C
2.设置引脚功能
/ B: l' |, [" G& Q0 F9 u9 E/ J# X% ?6 H7 m( k
5]6~5R092MSHKHLWCCQHB~A.png 2 W2 i) z% @, i/ e/ B- R
! c9 W8 U! k; e2 w& {3 ?; q' P
3.选择时钟源( r6 z( M3 N% M5 U

2 i9 F9 `6 i0 i+ v" C9 R* D/ P" y* ` 5NV{[K}T)BKKP(X7PMK$}@3.png * T" L  ?( k5 ]! t, v

8 z0 b7 }7 Q" O. B5 s% X4.开启Debug仿真
! x! N5 _0 O7 A- z8 U
4 ~' C1 w" s' ?/ V4 u1 X5 \, | %`TKM6U%[MPOP3X{YNH8CVA.png 5 T: L# z# Q9 Y) z5 {) b) _" u

2 ~- c3 z! P( T& I* C' }. K1 w4 N5.配置定时器! ]: T$ \! @) g: r

. a, _  ^& d3 C1 ^: T1 s U9D(YB@U9C1PPCWN}LJS~NH.png % r. ]* a3 Q( K! @6 X! W/ S

4 C% a  z0 E  M4 Y ]H4%FXO7YO3W)0JQF818W.png : a+ D  z; ~) `& S) I$ O% K3 b

8 R- ]1 C8 b" e& Q定时器定时时间简单计算方法:这里我们时钟树选择的时钟频率是72MHZ,用72MHZ/72/50000就得到了计数的频率然后再取倒数就是我们想要的定时时间了。
, ]0 k% m2 w4 Z1 |
- N* h  H4 G# x) a; l6.配置时钟树% b' |6 a& q& T$ M% `( A

. e2 Q8 U5 F+ q4 b8 M8 P( h @6Q}6X}1KLYOYNQ)C8_IU17.png : L; U0 M& \; m  `) W7 v. d
; y3 ?& U2 Z6 L' G3 \9 G) l
7.创建工程
( ~* j% ^6 Y5 Z( i2 }6 X2 |( S- \2 G1 t$ w* R
]@1U`Y9((R`5D2D~XP%U~(N.png
" s+ V% ~. [% |3 C/ O1 o7 W& W9 Y/ N* k8 L
2.代码讲解- u9 l3 h( o/ b, ^5 z; r" c
  1. 5 H% u( l& i$ @# }4 z3 e. S% x
  2. ) \- @  x6 N$ c) U4 U
  3.   /* USER CODE BEGIN 2 */
    ( i5 |) E$ `6 D: L$ }, V+ ~' S4 d
  4.   //start TIM1
    : A& N0 r9 N9 x9 K, q+ V
  5.   HAL_TIM_Base_Start_IT(&htim1);//以中断方式启动定时器1 U9 ~7 y' n; a0 U
  6.   /* USER CODE END 2 */
    , h. |! B+ |/ M) T7 M+ V' {" r
  7.   P. Z# F0 e( T
  8. /* USER CODE BEGIN 0 */
    8 Z5 ?. }( y/ w
  9. //当到达指定定时值时进入中断执行中断任务! G2 l3 U( b* B9 v
  10. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)  @; x& h% M$ i5 ^0 E8 ^
  11. {" _  t; m2 ]$ n- X% i" E
  12.   if(htim==&htim1)
    4 p3 C$ y7 C' J- i7 p6 j# Q8 _: P+ R
  13.   {9 @5 [' r. w/ Q  ^# K5 Z9 O) n
  14.     HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);//对GPIO口的电平进行反转(低-高,高—低)
    1 @8 a2 g+ r& L$ T$ r) y/ D0 a
  15.   }
    - E6 S9 ?, f6 O& d
  16. }
复制代码
2 Y& [: F0 h9 G9 w. o
总结2 G0 R+ _4 h8 M+ \& B& ?8 O
本文简单讲述了定时器中断的使用,主要就是要注意中断回调函数的使用方法,以及打开定时器的方法。5 i' f: S% ~) z4 U9 p" {. r3 f4 R
9 h/ A" S2 X$ z9 [

- z/ f3 W5 C- c+ H; d+ _. c* |- E. K* V% ^) B: g9 |
收藏 评论0 发布时间:2022-5-22 21:00

举报

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