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

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

[复制链接]
STMCU小助手 发布时间:2023-11-26 15:24
01引言( S  U8 \0 P: [7 \, j2 Q
某客户设计需要启动定时器在 3ms 后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。$ T) J+ m; ]# o& s

6 }& R" s2 G& Q/ T: z6 J* j02调研
' }9 G: b+ ~; O% g) h( X, e, ^客户通过 STM32CubeMX 配置 TIM7 并生成工程,在主循环中添加定时器启动代码;在定时器中断处理函数处理 update event 回调时停止定时器,并翻转一个 I/O 脚指示定时器启停,代码如下:
7 @8 i8 H* M3 h: [9 C- J- z4 j, ^
9 h6 Q) G8 I! U8 R2 }; J/ C  \5 U

1 g7 |3 [3 S8 ^& [& O5 u. ?
微信图片_20231126151428.jpg
图1.启动定时器

8 p' d+ y8 |* r+ c1 |  @( Z1 n" z/ J7 Z
微信图片_20231126151419.jpg
图2.定时器中断回调

- h0 ?3 c: e9 ^; [7 P6 o& o( E3 v客户期待的结果是启动定时器时 I/O 拉高并保持 3ms,当 3ms 到达后产生中断拉低I/O,但实测时发现,定时器启动后立即产生了超时中断(高电平持续时间约 2us):
% ?# _3 K/ W6 M, m5 ]. T: |, F; ]* g: Q% a4 G

( a  Z; s4 {' n
微信图片_20231126151415.jpg
图3.实测结果

. e5 ~: m- `0 b, b- S03分析- @% y& w& G7 K* m1 X, L
应用代码在初始化定时器时会调用 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( )时又会立即产生中断,循环往复,详细时序和具体代码如下:+ P% Q( ]& ], A4 s5 ~
' u6 Y# X5 `* ^0 j, f
- W, R& A  o, r& l5 f3 N
微信图片_20231126151411.jpg
图4.问题产生时序描述
& `4 T0 u. V: W# f$ b) x
微信图片_20231126151406.jpg
图5.定时器启动代码
  B+ p: l% F% m

$ f4 X: V; ~/ S6 [& S04处理# k2 @' w6 m9 r. i, Y! Q
修改代码,在启动定时器前强制停止定时器计数、清除中断位、清除 NVIC 挂起的中断后,再启动定时器,详见下图红框内代码;( E- a. E4 b' m" E
5 {4 s- f; }5 ]( x, I: Y

+ [2 q3 H- Q1 r3 Q: f
微信图片_20231126151403.jpg
图6.问题修正代码

  u! z6 w  Q# k& c6 @! S6 ^2 c" j
微信图片_20231126151359.jpg
图7.修正 BUG 后的运行结果

9 R8 E  r  k$ L% n' |
6 D7 E% c& K+ p1 `1 B3 Z/ A$ i
- S3 h4 j2 z! _  z& o

0 [8 E* b" h/ m: ~3 L! g
& R& O) Y& u- X
05小结3 x/ j6 ^$ z; f' `* K' I! i- I' w
在碰到这类定时器异常问题时,可以利用 I/O 口指示运行状态,结合代码分析找到原因并加以解决。
) J8 t8 ^- K  |# L" c  M  }  f  |
  J% C6 Y) t6 B* x

7 z8 X; U7 ^. F转载自: STM32单片机
! `. ]% F+ v; s1 x如有侵权请联系删除) D# q) K3 W2 E1 g3 D& `* k. W

7 x6 |0 K& C: z! x7 W1 {5 t: q7 N; c* d3 @
' ~4 h8 {* K! U, l2 E' h/ d
% x. ]# r# @2 U8 {1 b2 s  F
赞 收藏 评论0 发布时间:2023-11-26 15:24

举报

0个回答

所属标签

相似技术帖

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