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

stm32H743 定时器溢出

[复制链接]
一蓑烟雨11 提问时间:2025-5-19 18:43 / 未解决

我利用定时器更新中断实现软件计时,定时时间是固定的按照{10ms, 20ms,650ms, 50ms,50ms}周期性进行的。由于下一次的计时时间是需要在定时器的中断处理函数中更新的,定时器没有使能自动重装载功能,而是在每次的定时器中断函数中先关闭定时器,再执行装载值更新,再启动定时器。但是,项目中在某个定时期间,进行了flash操作,导致了装载值没有及时更新,定时器计数到装载值后,定时器继续计数直到u32溢出,期间不再产生更新中断,个人尝试了将中断函数放在RAM中执行,防止flash操作期间无法执行中断,但是也无法避免,请问如何避免这种情况。

赞 收藏 评论3 发布时间:2025-5-19 18:43

举报

3个回答
废鱼 回答时间:2025-5-19 21:23:20

在FLASH操作期间,无法响应中断,和函数放在哪里执行没有关系,只能想其他的方法进行弥补。

butterflyspring 回答时间:2025-5-20 09:56:48
定时器是周期性跟新的,考虑一下用DMA循环搬运试试。

这样不依赖于软件。
xmshao 回答时间:2025-5-22 17:38:01
对你描述的问题及现象,不是很理解。说说我这边的理解供参考。


现在你的定时器中断是基于更新事件,计数器重装是硬件实现的,除非你工作在单脉冲模式
或手动停止,只要发生溢出,计数器肯定会自动重装进行计数。


具体到你这里,即使因为FLASH编程,导致中断没有及时来处理,计数器的计数与重装是不会被影响的。


充其量,计数器溢出后会按照之前的旧值重装后继续计数,怎么会有你所说的继续计数到u32溢出呢?


u32是什么意思?STM32常规定时器里除个别TIMER外,绝大部分还是16位的。


只要你开启了相关中断,当中断发生时没有来得及处理,相关中断请求标志,即UIF标志还是存在的,


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