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

基于STM32的定时器不按设定超时产生中断

[复制链接]
STMCU小助手 发布时间:2023-11-26 15:24
01引言
8 k1 r3 _" L; E6 p# X# A# c某客户设计需要启动定时器在 3ms 后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。
' F8 j0 p  T/ |& Q3 o! R
2 T& k+ K0 G/ g8 l# V02调研6 O7 j- n: G5 j1 u
客户通过 STM32CubeMX 配置 TIM7 并生成工程,在主循环中添加定时器启动代码;在定时器中断处理函数处理 update event 回调时停止定时器,并翻转一个 I/O 脚指示定时器启停,代码如下:: g6 r, X2 Y" q# }/ @$ A" X
0 s# g& d! v1 f" M$ R+ [
. T6 g# m! H: F5 J( E% I
微信图片_20231126151428.jpg
图1.启动定时器

/ X4 h3 Y" Y, w( c
微信图片_20231126151419.jpg
图2.定时器中断回调
) d( ~6 T% c5 q9 ?( j8 }0 }
客户期待的结果是启动定时器时 I/O 拉高并保持 3ms,当 3ms 到达后产生中断拉低I/O,但实测时发现,定时器启动后立即产生了超时中断(高电平持续时间约 2us):" y1 y$ U7 `6 ?" L8 B, V
; R/ U5 L" b, e8 e5 n$ o
- f& G' P+ D8 C) m! L/ H) r. ]
微信图片_20231126151415.jpg
图3.实测结果
) X/ M# ]! w: l2 W0 `
03分析. l: E3 A: C2 R: P) {4 ]0 J
应用代码在初始化定时器时会调用 HAL_TIM_Base_Init( )接口,此接口会调用TIM_Base_SetConfig( ) 配置定时器,并产生更新事件(TIMx->EGR = TIM_EGR_UG)加载寄存器,此事件标志 UIF 会被置位,在调用 HAL_TIM_Base_Start_IT( ) 启动定时器,在此使能定时器中断时,由于 UIF 已经置位,所以会立即触发并进入中断处理函数,中断回调函数会停止定时器计数,并禁止定时器中断;但当从中断处理函数返回继续执行HAL_TIM_Base_Start_IT( )时,此接口会使能定时器开始计数,进而在下一次调用HAL_TIM_Base_Start_IT( )时又会立即产生中断,循环往复,详细时序和具体代码如下:
; B' F/ Q3 d, l( F! [
8 l4 p4 b' W% ^! N& z" j  w
, P8 F( g" \. i" V
微信图片_20231126151411.jpg
图4.问题产生时序描述

, z9 m7 \9 _+ C: v3 u8 V# s
微信图片_20231126151406.jpg
图5.定时器启动代码

/ T) z- S7 E2 z* a4 f% n# @

5 C6 p$ b  a, e: [3 E7 h04处理
; Q$ ^8 V' e8 c修改代码,在启动定时器前强制停止定时器计数、清除中断位、清除 NVIC 挂起的中断后,再启动定时器,详见下图红框内代码;
6 i- x3 i0 ?, r  L4 e, B: A8 m" g8 _+ f1 P% q
9 y: I6 k# I3 B+ Y* _' [/ S* Z$ z/ ?
微信图片_20231126151403.jpg
图6.问题修正代码

4 h4 B6 _; y, D6 _) Z, D
微信图片_20231126151359.jpg
图7.修正 BUG 后的运行结果
% R  _2 E& q0 v- U6 n
9 {% X/ j! S: ?3 ]

( A& G; V9 ?. @5 U. D! u* R& `
! g1 N+ @9 S2 o
/ o( z& d3 n% z4 h4 W- i
05小结
  c4 X. G" ~) Y+ g1 c& B) O: s在碰到这类定时器异常问题时,可以利用 I/O 口指示运行状态,结合代码分析找到原因并加以解决。) J( l( c: t$ |0 I* x9 c
; C1 v8 b* _3 Y. E

" p5 V3 m* I& P9 k转载自: STM32单片机
# s$ u0 }9 X- C, V% p) e5 V如有侵权请联系删除* H1 c7 l0 V; j

. u* R1 L: b. B1 c
6 w( c8 C$ o& H. _# I. `

9 k2 V3 V5 J# }4 ^
: h2 D2 w0 g7 d) r5 g5 R6 J" N
收藏 评论0 发布时间:2023-11-26 15:24

举报

0个回答

所属标签

相似技术帖

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