硬汉嵌入式论坛

 找回密码
 立即注册
查看: 820|回复: 3
收起左侧

[TIMER] 新手关于滴答定时器的定时疑惑

[复制链接]

3

主题

8

回帖

17

积分

新手上路

积分
17
发表于 2022-10-17 21:51:38 | 显示全部楼层 |阅读模式
看了安富莱H7的BSP教程中,关于滴答定时器的定时任务有点疑问:比如一个1ms进入一次的SysTick中断服务程序,那么在这个中断服务程序里面所执行的任何语句也是消耗时间的,而且这个定时中断自身也无法嵌套自身,必须等待这个中断服务程序结束后再次下一个1ms的定时开始,我这样的理解对吗?如果没问题的话,那么这种1ms进入一次的中断服务程序,随着累计进入的次数越多,相对于真正流逝的时间误差也就越大,对吗?
如果没问题的话,这样定时的意义是不是有悖于本来想要的1ms定时的愿意呢?


a8b6573c748077766db327e00e7fe45.jpg


最终的疑问点就在于下面这段代码(这段代码在SysTick_ISR()中断服务程序里面,每隔1ms进入一次),两个函数bsp_RunPer1ms()、bsp_RunPer10ms()说的是每隔1ms、10ms调用一次此函数,那么实际上这里的1ms和10ms是不包含这两个函数内部所执行的语句所消耗的时间,也就是说,实际上每次调用这两个函数的时候都超过了1ms和10ms是嘛?
image.png
(PS:新手提问,可能问题愚蠢、可能理解有问题,恳请大家指正,向大家学习!谢谢!)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106735
QQ
发表于 2022-10-18 12:57:45 | 显示全部楼层
不会,中断里面执行的程序非常短,不超过1ms即可,如果超了就会有问题。

然后就是简单的换算,像H7系列,主频是480MHz,1ms的中断来说,1ms时间内有480000个时钟周期,这个时间能干超级多的事情。
回复

使用道具 举报

3

主题

8

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-10-18 13:12:31 | 显示全部楼层
eric2013 发表于 2022-10-18 12:57
不会,中断里面执行的程序非常短,不超过1ms即可,如果超了就会有问题。

然后就是简单的换算,像H7系列 ...

嗯嗯,谢谢老大,前面我理解有问题,如果定时器循环计数模式,中断标志置位后进入中断处理后也不影响定时器下一次计数的开始。
回复

使用道具 举报

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2022-10-18 13:29:16 | 显示全部楼层
本帖最后由 emwin 于 2022-10-18 13:34 编辑

定时中断,不会有你说的情况
image.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 01:08 , Processed in 0.203293 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表