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

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

[复制链接]
STMCU小助手 发布时间:2023-11-26 15:24
01引言4 E+ F' n# J4 w0 n) L" ^7 R
某客户设计需要启动定时器在 3ms 后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。
* t% F4 @5 V- N3 O2 z6 Q
3 r0 y2 t2 J( O7 M2 A02调研0 F: F6 `, _* ^; S
客户通过 STM32CubeMX 配置 TIM7 并生成工程,在主循环中添加定时器启动代码;在定时器中断处理函数处理 update event 回调时停止定时器,并翻转一个 I/O 脚指示定时器启停,代码如下:! r! i% w. t; q( N) P: A4 y

8 u3 D6 H2 C2 S# t9 Q) S1 R5 F
6 O+ y( f0 m5 c- a* S% u; J
微信图片_20231126151428.jpg
图1.启动定时器
6 h; N6 x! w& G" W4 r0 l
微信图片_20231126151419.jpg
图2.定时器中断回调

! U( X9 |; F; w* z% `5 i客户期待的结果是启动定时器时 I/O 拉高并保持 3ms,当 3ms 到达后产生中断拉低I/O,但实测时发现,定时器启动后立即产生了超时中断(高电平持续时间约 2us):8 w6 A1 _3 m/ [" T5 i

$ v  U0 X3 A7 `% m7 `

$ p% P9 I! ~7 G. `+ v8 T
微信图片_20231126151415.jpg
图3.实测结果
9 G3 Y9 |3 B$ a# F
03分析8 k% q6 _' K# ]  `" v9 S
应用代码在初始化定时器时会调用 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( )时又会立即产生中断,循环往复,详细时序和具体代码如下:
  e- O+ G6 i+ E- X, r5 d! t1 c2 |. p) ~- a* Q4 ~) U% S

" m; _. V8 r+ y5 v( C
微信图片_20231126151411.jpg
图4.问题产生时序描述
# ]! J) k2 s' t5 K( f; \
微信图片_20231126151406.jpg
图5.定时器启动代码

5 V) P0 }" ]1 m, `' x0 D- i6 Z

! E5 K+ d9 a: k04处理
7 L9 q0 @: N9 |3 U- v; Z7 ]- T修改代码,在启动定时器前强制停止定时器计数、清除中断位、清除 NVIC 挂起的中断后,再启动定时器,详见下图红框内代码;
! O* J- G7 Z6 M" u
" c0 T  m0 p% l

3 e% S, U8 S3 J) q% {
微信图片_20231126151403.jpg
图6.问题修正代码
) F9 f  h7 x0 Y" P
微信图片_20231126151359.jpg
图7.修正 BUG 后的运行结果

; j- i+ @) h+ M& ^( O" X
  v9 q1 e4 K# Q- C' Y( ^/ o2 X6 \

' e" K& N) s3 Y' z5 {6 P( b8 R: r2 R/ {4 b
5 x& u3 E' N1 _6 y6 c
05小结
' m" r  r9 w8 Q在碰到这类定时器异常问题时,可以利用 I/O 口指示运行状态,结合代码分析找到原因并加以解决。* ?$ h; {/ h* D' J+ w* G" L

1 V: q6 c# g! W0 v4 w% z& N
2 _' R3 _7 Y5 l
转载自: STM32单片机. U7 y. l" Y0 s& ^, F8 q6 y
如有侵权请联系删除
: _# Y+ F' [1 }$ k7 R6 n9 ?; v
/ Y3 X& F9 `$ D7 [1 u
* K! w% r5 j- h

+ O$ M# A$ s6 d& L" _" A4 D+ i: h$ f# z. F4 n  m8 y
收藏 评论0 发布时间:2023-11-26 15:24

举报

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