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

【实测教程】STM32CubeMX-STM32L4(定时器Timer2)

[复制链接]
STMCU小助手 发布时间:2023-1-15 00:07
一、开发板平台简介:* r. C) R2 o- F/ o% Z# O
(1)开发板主芯片型号:STM32L431RCT6
! j: A9 \1 g( A7 R6 E# _( C' d(2)开发板主芯片封装:LQFP-64_10x10x05P
# ?9 }( N) q0 G( F# I2 K(3)开发板主芯片内核:ARM® Cortex®-M4
9 ~* e! i  J! P" |3 j(4)开发板主芯片主频:80MHz5 D7 H/ `2 J6 E6 j0 G
(5)开发板主芯片Flash大小:256KB
' s8 }1 z8 l: f(6)开发板主芯片RAM大小:64KB
0 @4 I" _8 W  I* G% z" J" \(7)其他外设:请参考芯片手册
8 G/ W$ F% g' L" L4 c+ G% h4 I  A0 b9 d* q* p. w6 H' h
bb91345227434ee7a43a34bf3fe366e6.png
9 t9 J% y- C. \+ X
% Z* |2 l  ^8 s, x- Y, L
929c0cce04aa4115a8623703982bf3e1.png
9 j4 W0 }. S# c( L9 ?, l" n' F9 h( Z$ x
4 p; f/ D1 Q- ^% |& }1 x
二、新建工程1 p% }. j. J' d4 j: `) D0 u( V
1、打开STM32CubeMX,点击“File”-->"New Project"  i( V: q  b! R( j) M
7 U8 p$ k' n. A9 m
2399170347904e959c855fefd5877f84.png 6 \6 ^: X* U6 z7 r- k' a' K" w

7 z& F; @# u( [2、等待打开主芯片选项界面(大约1分钟时间)。
1 n2 u: K: `# e
d74d2fdc60c9440483e2b7cf8d928e7f.png
9 i7 R0 k0 G& |

& S$ V2 @. ^9 X2 W3 n0 y3、昨天搜索框中输入(或选择)所需的主芯片型号(因为我们用的是STM32L431RCT6开发板,所以此处现在STM32L431RC),然后在右下角选择STM32L431RCTx(因为开发板主芯片是STM32L431RCT6),左键双击即可打开新建的项目。
1 y$ J" c: R- p9 D; E* V  x
& F1 ?3 u$ a: S' ~2 F" Q
7b80345238d74bea82ce70e1a348f7b4.png
) D) w3 l0 C+ f9 M& \" n3 c  d$ f
4、选择时钟源。
; Z! Z' |5 M* H1 b( S3 ~* @(1)因为开发板上有8M外部时钟,此处选择外部高速时钟(HSE)。1 d1 p7 H# \% i# q: |
(2)因为我们没有用到外部低速时钟(LSE),此处不做处理。
) a7 b( y- A' |$ M- o1 h! g
5 ?4 A  F. a+ V; `$ b: h/ m, ]( h# e
72119b971f62410fa8344f7f9fb9f389.png
$ j. D) L& [' ~, M  G6 L& P' M' `$ m( s

9 m- q) Y% L2 O$ s6 N+ }+ j% N( P; s5、查STM32L431RCT6开发板原理图得LED1控制引脚为PC0,则配置GPIO的引脚PC0。+ E& R% V! h& n, Y2 f

# Z+ \- h5 r9 ?, H' L( {/ y鼠标左键点击PC0,选择“GPIO_Output”,表示设置该引脚为输出模式。
6 ]( d& \) N! m, ^
0 B! n; ^7 ^2 y; u7 r
0045751883134411a48743a0cd4a97d9.png 7 t4 W7 @+ e+ h8 ?# D
7 O2 Q: a; u6 t/ D& Q
492907c1e71149819adbaee4516a2af4.png ! a7 m4 |' S, i* v, g) V) e  {/ W# R
0 n" W& U5 p4 u* d/ \' d5 }
6、根据自己的需求配置GPIO的参数,如输出方式、输出频率、上拉下拉等。因为GPIO控制LED的要求比较低,此处采用默认参数即可,不用修改。  ]  K! t  M# S/ t- o7 ]+ z- Q
& B/ y  r; A, |% p9 B7 R" L
38ff4b80e1c5495ba3076a5158fd91fa.png
) }" i9 o- r% Q$ U# j" d7 s. {/ @' U
* D) }6 R; `/ `( M, B9 y3 e
7、配置定时器TIM2) u3 d+ ]5 {) q; d
(1)STM32L431xx 系列有 1 个高级定时器(TIM1), 3 个通用定时器(TIM2、TIM15、TIM16),两个基本定时器(TIM6、TIM7),还有两个低功耗定时器(LPTIM1、LPTIM2)。
9 _, L+ `8 t" \3 H

1 z, N6 e. o6 ?8 ^" k4 k0 M) o- M(2)此处只使用了TIM2的定时计数的功能,首先选择TIM2,并且时钟源设置为内部时钟。
, p0 S8 e5 v. L& F7 J3 y, C6 Q) U% G* U2 E2 {2 e
6a0f2c39237b45b9adb61940c9805d3b.png
( K; ~2 Y( q6 j9 [$ q
) [) f0 E2 P+ T6 w(3)接下来是对TIM2的参数设置,参照数据手册中的RCC时钟树,TIM2内部时钟来源是PCLK1 = 80Mhz,我们的目的是每秒钟产生2次中断,所以预分频系数设置为40000-1,自动重载值为1000-1,得到的计时器更新中断频率即为80000000/40000/1000=2Hz(2Hz即0.5s):3 h, @# [5 R$ z4 j! ]

& S& ]) }/ `$ b  ]& d
4b2d341e8da446ecacc3030b2f962f4c.png
( f5 V# o8 s1 K2 N/ v' d3 K
, e- s, L( U8 `+ ^/ I
(4)开启TIM2中断即可。3 |/ t' n, x+ @6 `' F4 p- [

% K: s) a9 K, Z& O
8d40ecae57144183ba5f885b7c77ca1d.png : R6 |5 {- M1 J0 ?
& u' h( Q9 q5 J1 G* C
8、配置时钟树,用于系统内部时钟,以及各个外设时钟等。此处选择外部8M晶振作为主时钟频率,内部最大倍频80MHz。" n: j; W/ w0 Z* `

" }7 g5 R- ^- Z& n$ d7 ?" `
bb92fee3c06e4743aa1efd770bdc9cc8.png
  ?1 T7 c& q* T; t
1 w" W" J6 U8 A9 h
, _4 \( m) N" s9、完成配置工程。
/ ^: l& E8 f1 R" m+ N  m* z( s, A
$ {! V' ?. g! j/ q0 Q- D( ^8 G
ef6feb3c454441c59bf509c6692e254d.png
# K! {  a& z2 Y# {& U$ r
( h5 d1 D+ N; J; K, A5 |1 y
10、生成代码。
6 q5 h* _7 L2 v3 d& v: A) N  K; M8 C  Q1 M, P  Z
8eaa7d0babea40ee93f158481a6ee471.png ( @4 y: ~% ~7 }" k" H

, D/ ?, F+ P' \5 |& d. ] 三、在KEIL 5中编写代码( N6 ^- T$ }: X* ^. T/ S9 o
1、找到刚才新建工程的存储路径,安装项目名称,打开项目工程。0 \4 ~  \$ d% `# v  @

* R1 \% L% p/ Y. K( }7 u( D
5951e4dd80b94d94b063f26ba2871dd2.png $ O' i8 B& D$ k7 s, U! m4 U

+ m" f6 Q5 e+ w2、在stm32l4xx_it.c中生成的中断处理函数如下,定时器TIM2所有的中断都会调用该中断服务函数TIM2_IRQHandler:
0 l* h2 T# Q1 d! }  g  K3 W% A1 Z9 m. t, ?# X- c
d704737d507746e59c7911cba14d6fe3.png
" R/ S$ u1 w' L7 |; p9 e2 R' C+ P5 ?2 `, d
3、在中断处理函数中自动生成了HAL_TIM_IRQHandler(&htim2)代码,该代码会自动根据中断事件回调相应的函数,这里我们需要处理更新中断的事件,回调函数默认是__weak定义的,所以在stm32l4xx_it.c中重新定义该回调函数,并且在该函数中添加功能的时候,因为该回调函数会被所有的定时器共用,所以需要先判断是哪个定时器在调用:' X4 l- r6 z# X# w8 M- {
(1)在回调函数中添加LED1反转的控制函数。
! n$ j( e+ w4 J+ v- N1 t/ [* Y" G. K7 P5 }4 o  R/ f

  1. ' ~" p) O* K, z$ Z; t
  2. /* USER CODE BEGIN 1 */
    ( H* g3 h8 {% }& D
  3. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* tim_baseHandle)
    # k6 i3 V" F: y+ [
  4. {+ P' W/ R; s  N
  5.         if(tim_baseHandle->Instance == htim2.Instance)+ o  F4 d+ ^5 E, W
  6.         HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_0);   //反转LED1
    + p' I% U% e3 e: j3 @
  7. }
    + ], q& d1 ]6 T6 H# B5 {. |4 ^
  8. : e! y- l7 q, ]( G, N; r$ E
  9. /* USER CODE END 1 */
复制代码

/ N0 m6 x3 Q" p(2)重新函数的位置如下:) h; {1 H) r: C' G& K1 L

. K0 k. ^1 A+ o- P$ Q! Z
5274e54a690145329f7c490ef9c486a0.png 3 s$ o  p* N; G3 N/ w% ~7 d1 v

7 J' f/ c7 o7 O: W( ^$ W& K* { 4、最后在MX_TIM2_Init()函数中开启TIM2并使能中断。
# n: l1 {# Y- w  U
  1.   /* USER CODE BEGIN TIM2_Init 2 */* n; @" W. m" e
  2.                 HAL_TIM_Base_Start_IT(&htim2);            //开启TIM2中断* ?' k+ ]3 k3 Z, {+ ?9 W% h
  3.   /* USER CODE END TIM2_Init 2 */
复制代码
  m/ V* `9 b- e/ L8 u
890dbf6203e54d8ba6259be34e4a135c.png ! o7 J. ]0 X" g5 o0 I" s+ ~
. V' L( P8 |4 @
5、选择Options for target ...>>Debug>>J-Link/J-JTRACE Cortex,点击Settings>>选择Port(SW),可以看到搜索成功SW Device,表示芯片可用,可以下载。. x0 m+ p: ^0 p" |

- o6 j; a% C7 T' ~* Y0 p6 L' a
d444af879a804dc1bc924096aa0ff97c.png
' K' v& H* |! G8 D* A- A3 K/ l; R* v5 K* y& ~
6、点击“build”(或快捷键F7)进行编译程序,可以看到编译成功的提示“0 errors,0 warnings”。$ n" k# o/ ^! @) R1 ^# \

; E- X4 d. {# Z
1e522f91c7ff4e528c21052688aa5825.png
* V" Z2 ^7 ~( A% e6 S# E# N, M1 e, g% n3 ]
7、点击Download(或者快捷键F8),即可下载程序。即可看到LED1每隔0.5s闪烁一次。
/ Z4 Y4 `! P% J2 T
" m) c$ q9 m* |0 ]$ B$ F3 u
7b47f33669f749e698147ecffc06bf4b.png # z; D. B% H1 b5 |" w& q

% T& R" N) r; b: |. V( Z' |8、 如果下载程序后,没有看到LED1灯闪烁,可以按下述方式设置一下(Reset and run表示下载后自动复位和重启运行)。或者重新彻底断电再次上电(或按开发板的Reset按键复位MCU即可)。
7 Y8 x: B9 Q8 K+ {6 v+ {, Q- D4 S5 s: O
7f75477f2ac24930b2e5d00ffe27f00e.png / M1 i% ?' ]9 K% _
8 {% J9 @& J& n4 {1 j! M+ \
9、至此,STM32L431RCT6通过通用定时TM2控制LED1灯闪烁即可完成了。" Y: k+ P! O' x  J+ ^. I% T* R; N! Q
————————————————3 R- E% I+ V. i6 Q" Y
版权声明:智能小屋ZYXC
( g  s( _: t1 `8 w1 Q: V/ S4 u, u) D, G/ W6 B$ H
8 p3 P. X/ q! E* J1 ~
赞 收藏 评论0 发布时间:2023-1-15 00:07

举报

0个回答

所属标签

相似技术帖

官网相关资源

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