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

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

[复制链接]
STMCU小助手 发布时间:2023-11-26 15:24
01引言
) l- l: B! Y/ \, L5 T& _) E某客户设计需要启动定时器在 3ms 后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。
. ~7 O. j* L8 n! E8 i3 D' U
: [0 l0 N4 p$ ?8 o+ x$ c02调研0 P- k* h( w+ W! I) B. h: S
客户通过 STM32CubeMX 配置 TIM7 并生成工程,在主循环中添加定时器启动代码;在定时器中断处理函数处理 update event 回调时停止定时器,并翻转一个 I/O 脚指示定时器启停,代码如下:; m% d8 V+ O( X

  U" ?5 B1 _3 u; {6 S6 n6 N
7 ?# a. ^2 X* l7 g. y5 d$ U
微信图片_20231126151428.jpg
图1.启动定时器

. }3 B3 c* d! P2 w6 R9 x6 S% k$ n! _
微信图片_20231126151419.jpg
图2.定时器中断回调
: ]  g, {! `( t0 @8 H! K
客户期待的结果是启动定时器时 I/O 拉高并保持 3ms,当 3ms 到达后产生中断拉低I/O,但实测时发现,定时器启动后立即产生了超时中断(高电平持续时间约 2us):
+ o0 ]- q+ {! q6 N1 k7 D8 }! z9 M: a9 j' j2 ~

9 {* ~* a, f) g, o
微信图片_20231126151415.jpg
图3.实测结果
# |( W' w- E$ h/ F+ r! Q
03分析: ^6 W5 i& L* M& k* C8 l1 e
应用代码在初始化定时器时会调用 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( )时又会立即产生中断,循环往复,详细时序和具体代码如下:5 \; b0 N4 t2 X9 s
* t/ e/ j' z% ~6 b! ^

. i7 l3 ^7 Y( W/ V  _" w
微信图片_20231126151411.jpg
图4.问题产生时序描述

5 [) k6 J, A& [- A
微信图片_20231126151406.jpg
图5.定时器启动代码
, Y* \0 i, r5 S0 L. S  `( G) {/ f
' p2 |8 N2 Z  `5 m
04处理1 V4 {1 X/ A; L: j+ i
修改代码,在启动定时器前强制停止定时器计数、清除中断位、清除 NVIC 挂起的中断后,再启动定时器,详见下图红框内代码;0 i6 s+ S- q! Z

8 M0 V6 ^3 L8 `1 ^, ?

% L# ]9 H0 f& X8 V
微信图片_20231126151403.jpg
图6.问题修正代码
) C1 ]+ h* F8 ~4 b1 k- V
微信图片_20231126151359.jpg
图7.修正 BUG 后的运行结果
. C- W4 J, F. p8 ?# L0 O5 r9 W

7 M$ G8 x4 R2 n' F- R
. }) {9 {. p* `) s- m( `0 l
/ ^( y" x% C  m+ F' c' m% M! {( X

' S4 m. _  E/ k  W/ o" t05小结- T: n+ ?; y! p$ x" r* N
在碰到这类定时器异常问题时,可以利用 I/O 口指示运行状态,结合代码分析找到原因并加以解决。
" S  d) F& ]3 y( C- a/ b1 j/ ^$ G3 o8 Q5 B3 F1 C
4 |/ t; @8 Y( j' B/ Q
转载自: STM32单片机, E& _5 ^* p. _
如有侵权请联系删除
' z; [1 H1 j" Q3 ]/ a4 c8 P% Y5 A# w# d+ u
3 {; u. |8 J$ m+ P

+ M; `' y* ~: \! W/ q" \7 @" ]1 C) b: j3 [, B" S6 Y
收藏 评论0 发布时间:2023-11-26 15:24

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版