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

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

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

[复制链接]
STMCU小助手 发布时间:2023-11-26 15:24
01引言
! Y& F5 A: U5 U6 L某客户设计需要启动定时器在 3ms 后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。
" P3 z  k5 T& U" V
( I# v% ^; I) v- b- S' v$ H, |02调研
, v. V6 t/ }+ V6 E  G- v客户通过 STM32CubeMX 配置 TIM7 并生成工程,在主循环中添加定时器启动代码;在定时器中断处理函数处理 update event 回调时停止定时器,并翻转一个 I/O 脚指示定时器启停,代码如下:
, T, l9 Y1 ?$ K1 R* `2 i
4 A9 X1 R' @6 ?  C& j
4 H+ U  U6 z& u5 {8 c
微信图片_20231126151428.jpg
图1.启动定时器
- H5 T, z( `9 W
微信图片_20231126151419.jpg
图2.定时器中断回调
$ n$ @# G! x1 X- p
客户期待的结果是启动定时器时 I/O 拉高并保持 3ms,当 3ms 到达后产生中断拉低I/O,但实测时发现,定时器启动后立即产生了超时中断(高电平持续时间约 2us):* C% u* B, I0 J$ I
- q9 S! a) `# K/ {$ D

0 ?& ^# h" B& y# Z
微信图片_20231126151415.jpg
图3.实测结果

% f0 ]" |4 m+ Z: t03分析5 y. L0 R, s# b
应用代码在初始化定时器时会调用 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( )时又会立即产生中断,循环往复,详细时序和具体代码如下:
' @  j% F5 K8 `/ {! @, a
& B# z* E4 u- o% M2 W# I
3 \- m$ V  Y' e8 |$ _
微信图片_20231126151411.jpg
图4.问题产生时序描述

6 x  A- R/ H# p
微信图片_20231126151406.jpg
图5.定时器启动代码

. a6 E) C2 F) L* V/ m7 j! L2 p
$ ?/ J3 c3 i! ?
04处理- X' }5 h+ {8 Z
修改代码,在启动定时器前强制停止定时器计数、清除中断位、清除 NVIC 挂起的中断后,再启动定时器,详见下图红框内代码;
3 G3 \; Y# m* d$ y8 w9 d( K. z, c5 P. G& q: ^$ t3 O
& N5 G1 ]" D! M
微信图片_20231126151403.jpg
图6.问题修正代码

) n! X# }4 s: _1 y
微信图片_20231126151359.jpg
图7.修正 BUG 后的运行结果
* j- H4 K/ @% y+ O

/ m( L( p9 v  N& P9 g5 I7 w

! Z/ @9 _+ j' z1 r6 \# [2 c
* ]# P7 d9 D! m$ P' R, `* I
* u! Y* W2 a5 E
05小结. Q9 l$ m3 g# ~3 h, X: ?: ^3 }
在碰到这类定时器异常问题时,可以利用 I/O 口指示运行状态,结合代码分析找到原因并加以解决。2 e& {  {+ w! R- g/ X! U
& b* ?3 z. e  I7 a# w' Y3 k" p
+ o; K6 }. e% c0 F6 k8 j0 W* G* U
转载自: STM32单片机& B: d- c* h: q
如有侵权请联系删除- C; {# m: n+ L: b' u8 K  ~3 r0 J
2 D* C3 F+ q+ L8 @8 n
0 u8 K* B) A" o, |. x. l* F- z/ s- I0 S1 G

$ Q/ L6 q9 p2 {- f: {4 I% Q8 \
5 Q" i/ z5 k  i4 I& U' Y
收藏 评论0 发布时间:2023-11-26 15:24

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版