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

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

[复制链接]
STMCU小助手 发布时间:2023-11-26 15:24
01引言5 ~6 i" T3 e3 N' I/ j+ b- O
某客户设计需要启动定时器在 3ms 后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。8 @8 [" I+ u+ P' J' w( L1 b

$ ]6 a0 |; T  T1 R! H% y02调研' o4 ~! |; d* N  O; q/ r. ~
客户通过 STM32CubeMX 配置 TIM7 并生成工程,在主循环中添加定时器启动代码;在定时器中断处理函数处理 update event 回调时停止定时器,并翻转一个 I/O 脚指示定时器启停,代码如下:. n/ m( V9 |; o$ E

% i7 c4 h  r4 a# t( W! X7 z

9 ~0 ]9 e3 E( A
微信图片_20231126151428.jpg
图1.启动定时器

' C, f) O8 N' S; H3 {" d( _
微信图片_20231126151419.jpg
图2.定时器中断回调

0 ^  M5 k3 H( }( q8 c4 U$ [# {客户期待的结果是启动定时器时 I/O 拉高并保持 3ms,当 3ms 到达后产生中断拉低I/O,但实测时发现,定时器启动后立即产生了超时中断(高电平持续时间约 2us):
: w8 ]. V" W, v/ p# |* l: c: `' w& x( f. L' m" `
. H& a& ^2 v- S) o1 X9 C
微信图片_20231126151415.jpg
图3.实测结果
4 }. d' d; x% x  a9 N& Y
03分析! J3 [- h6 y: C- U3 H0 r
应用代码在初始化定时器时会调用 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( )时又会立即产生中断,循环往复,详细时序和具体代码如下:
: Z  r5 I$ |' s9 v% R) E" h2 C4 M3 k% t; y; N& |2 _
! S( M1 u2 m5 Z6 k% R6 h
微信图片_20231126151411.jpg
图4.问题产生时序描述
; q$ t4 a" f  ]
微信图片_20231126151406.jpg
图5.定时器启动代码
$ \( @' _( Y5 o* y, ]% }
- a  S6 ~$ V; t& W8 N) v) h" z
04处理) A- X6 {  v1 G/ a- x
修改代码,在启动定时器前强制停止定时器计数、清除中断位、清除 NVIC 挂起的中断后,再启动定时器,详见下图红框内代码;
5 `; M3 f1 {: z+ k/ r5 H
; H' E$ D6 E! k: C; E4 V

& k0 p! A% [- h6 {4 A
微信图片_20231126151403.jpg
图6.问题修正代码

1 M) c! d5 S  v- G& D
微信图片_20231126151359.jpg
图7.修正 BUG 后的运行结果
; J3 D5 @& ?% e, d. U. D* T

; J  F* ?/ P) Z
$ _$ S! ^" K+ x* A+ s2 \
! _) o. X# [# J0 l) c$ x, H$ t6 L

5 d# }3 }5 h/ u/ R05小结4 z+ J4 O/ Q( w  Z
在碰到这类定时器异常问题时,可以利用 I/O 口指示运行状态,结合代码分析找到原因并加以解决。0 g, p* [, U% T5 W: M& m$ `( E& S
1 K9 h% G4 z1 p: V& T3 o' d! ^6 v
$ F% v$ k) |  W+ u, T& ~
转载自: STM32单片机  g! C$ m6 l! X
如有侵权请联系删除
) V: M5 N- w9 P- [# f3 z$ m& T2 J. O/ o/ j" A% |# i
8 V( z2 f7 o- Z( U

7 y; s+ `, {$ l
% h  F- A8 C" {) V( g
收藏 评论0 发布时间:2023-11-26 15:24

举报

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