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

STM32F229 TIMER CNT问题

[复制链接]
jyl_518 提问时间:2020-5-28 11:30 /
CPU:STM32F429ZGT6
开发环境:STM32CubeMX,KEIL V5.29.0.0

问题是这样的,有一个不定期任务,要判定执行是否正常(以时间判定)。1、在任务开始时启动Timer,并开启Timer中断。(这个没啥问题)2、若执行到定时中断,则判定任务失败。          (这个没啥问题)
3、若任务执行成功,则可在Timer中断来临前,提前关闭Timer及中断;
4、但是现在发现提前关闭Tiimer及中断后,Timer的CNT寄存器仍在不停的计数,导致下次任务时,计时错误,故不能正确的判断任务执行。

在HAL环境中,关闭Timer及中断后,怎么关闭CNT计数,及怎么清零CNT,翻了半天的库也没找到相关代码。
请懂的看看问题所在?

1.png
2.png
3.png
收藏 评论3 发布时间:2020-5-28 11:30

举报

3个回答
wenyangzeng 回答时间:2020-5-28 15:27:09
在定时器中断里要关闭定时器好像有点困难,应该设置一个标志位,在主循环中判断标志位置位时关闭定时器并清零计数器。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

jyl_518 回答时间:2020-5-28 16:31:20
wenyangzeng 发表于 2020-5-28 15:27
在定时器中断里要关闭定时器好像有点困难,应该设置一个标志位,在主循环中判断标志位置位时关闭定时器并清 ...

按您的思路,
我把定时器中断回调函数中的 “ 关Timer 关中断代码删了”
然后在外部  “ 关Timer 关中断”

Tmer居然真的停止了,并且CNT不再计数(未自动置零)

虽然这样可行了,但Timer中断后,不但要回调,还要在外部循环中关闭Timer,感觉定时准确性会大打折扣,
大神位还有什么好方法吗?
wenyangzeng 回答时间:2020-5-28 19:00:49
jyl518-283289 发表于 2020-5-28 16:31
按您的思路,
我把定时器中断回调函数中的 “ 关Timer 关中断代码删了”
然后在外部  “ 关Timer 关中断 ...

其实STM32的定时器输入捕捉功能就非常适合运行楼主所需功能。可以不用关闭CNT,也无需关闭定时器。
官方的F1例程可以参考
InputCapture.rar (12.78 KB, 下载次数: 6)
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版