请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU小助手 发布时间:2023-11-26 15:24
01引言
& _# q+ {- N/ P5 O( `4 m7 S某客户设计需要启动定时器在 3ms 后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。
. P- |; G* q+ Q5 M& d. e
( b3 a- M0 Q! g8 O; \9 Q# c02调研
, d# [: A  l( s2 ~% E! [  x客户通过 STM32CubeMX 配置 TIM7 并生成工程,在主循环中添加定时器启动代码;在定时器中断处理函数处理 update event 回调时停止定时器,并翻转一个 I/O 脚指示定时器启停,代码如下:: b4 S2 @! i6 p! t" r1 u) w& a5 R
2 f" F7 M/ E! i% P- ^6 E1 b2 U( N' o' q

2 [+ d2 s% q# t
微信图片_20231126151428.jpg
图1.启动定时器
  V8 E% w) R& l
微信图片_20231126151419.jpg
图2.定时器中断回调
7 v, o9 m7 D, o9 E9 H: r; Y2 B% e
客户期待的结果是启动定时器时 I/O 拉高并保持 3ms,当 3ms 到达后产生中断拉低I/O,但实测时发现,定时器启动后立即产生了超时中断(高电平持续时间约 2us):( q& v1 H. p- K5 {4 Z/ h

9 `) P2 h- O  G$ V" ?
1 a, s2 q" p+ [) I
微信图片_20231126151415.jpg
图3.实测结果
0 R1 B9 p0 A- z* J  B3 k/ o
03分析
- E4 _/ U2 n* P0 R  A4 ]应用代码在初始化定时器时会调用 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( )时又会立即产生中断,循环往复,详细时序和具体代码如下:
9 t* V( A( X9 l" u5 M" s+ @# v3 Z' Z; B0 j& }- O+ ]$ X
, R" ~+ F6 G% V2 J1 O' D$ `. {
微信图片_20231126151411.jpg
图4.问题产生时序描述

9 T9 Q3 Y% K5 o- d8 X
微信图片_20231126151406.jpg
图5.定时器启动代码

; ~, y) _6 q1 C  l/ c/ R3 a5 T

) G# P# o4 @6 |04处理, }( L( v. v: U3 ?1 u2 s( x
修改代码,在启动定时器前强制停止定时器计数、清除中断位、清除 NVIC 挂起的中断后,再启动定时器,详见下图红框内代码;* E4 a* J1 T1 s# E4 ^
; Z% B* U3 C8 A
* I2 N. F- i6 B
微信图片_20231126151403.jpg
图6.问题修正代码
' F( o5 ^4 Y7 ]
微信图片_20231126151359.jpg
图7.修正 BUG 后的运行结果
' u7 {2 R( F" k
" s& v4 ]+ ~- L2 ^5 {
2 b) C% |2 ^. Y& [4 k& e3 _

  T# ?- `; E8 w( Q) L" i, |
8 |. L" f( P, L# ?3 z
05小结$ m! t5 X* Q7 s! W. v2 K$ H8 w
在碰到这类定时器异常问题时,可以利用 I/O 口指示运行状态,结合代码分析找到原因并加以解决。
' d* k# ?: L  u5 @- o) m# z3 }! _$ z5 o. U
- ]) H7 B9 R- o( G
转载自: STM32单片机
) p1 R+ a# ]0 }1 ~% L- Y# o如有侵权请联系删除/ J, s9 }4 d* W% N

8 q6 y. Y& j0 O% X1 a. ~% J, n( U# i: `* p

+ D" n4 j7 M! Z& [9 r0 o2 j; _
# J" ]: J" O( Q1 O1 G7 r/ o
收藏 评论0 发布时间:2023-11-26 15:24

举报

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