aoteman 发表于 2025-5-5 12:36:36

vb2002 发表于 2025-5-4 19:56
这个不也是阻塞式吗?
程序一直 --

这个不算,每次循环只执行一次减法,并不会死等

aoteman 发表于 2025-5-5 12:38:31

jwd 发表于 2025-5-5 08:10
这种与程序执行有关,如果有中断的话会有影响,判断逻辑不同时间也可能不同 ...

这种适合在不特别精确的延时场合,事实上我们大部分的延时,都不需要精确延时,需要精确都基本都是定时器,我是不希望阻塞主程序执行

aoteman 发表于 2025-5-5 12:39:34

DebugLab 发表于 2025-5-2 14:40
这种做法,取决于主程序执行频率和中断,并且不是固定值,因为根据条件的不同,程序执行时间也是不同的 ...

我现在是主频22.118,请问是执行一次减法差不多是45ns么

vb2002 发表于 2025-5-5 12:40:47

aoteman 发表于 2025-5-5 12:36
这个不算,每次循环只执行一次减法,并不会死等

好吧,没有while ..就不会死等

aoteman 发表于 2025-5-5 12:41:43

晓飛飛 发表于 2025-5-4 22:05
DL在定时器中断里面自减岂不更准,而且也不占用太多中断周期

如果我1ms中断一次,我觉得太频繁,而且我还要等待别的中断,所以还是不太希望这种不是需要特别精确的延时不要用定时器,我只需要一个大概,比如我的延时目前希望是30ms~60ms都可以,最少是30ms

aoteman 发表于 2025-5-5 12:50:39

DebugLab 发表于 2025-5-2 14:40
这种做法,取决于主程序执行频率和中断,并且不是固定值,因为根据条件的不同,程序执行时间也是不同的 ...

我现在不需要考虑其他冗余,比如中断和其他程序,我现在就想知道,我执行比如10的6次方减法,需要多长时间,其他的我就当时间冗余,我的延时可以在30ms到60ms之间都可以,就需要一个延时确认的时间

jwd 发表于 2025-5-5 13:27:50

我一般在定时器置一堆标志位,要用的地方取其中一个标志位,清零,计数+1

xxkj2010 发表于 2025-5-5 17:13:32

我觉得想准确点就用定时器,不想准确的就用阻塞式延时。用阻塞式延时的过程中,所有的中断也应该会响应吧。在大循环中自减,这个延时的时间数值不是很好把握。

晓飛飛 发表于 2025-5-5 18:17:44

aoteman 发表于 2025-5-5 12:41
如果我1ms中断一次,我觉得太频繁,而且我还要等待别的中断,所以还是不太希望这种不是需要特别精确的延 ...

如果框架和时间片处理得当的情况下,1ms的中断并不算频繁,也不会被别的中断影响,除非有些中断写的冗长,周期接近或大于1ms。单片机就是用来运行代码的,1ms的周期不至于累死MCU,不用反而浪费{:4_167:}

我心飞扬 发表于 2025-5-6 03:05:21

aoteman 发表于 2025-5-5 12:50
我现在不需要考虑其他冗余,比如中断和其他程序,我现在就想知道,我执行比如10的6次方减法,需要多长时 ...
如果条件允许,你看这样能否解决你的问题:
自己写个程序,利用USB库中的printf_usb(),发信息给AIapp-ISP下载软件中的“CDC/HID-串口助手”,利用里面显示的接收时间,调整你要的数值。

另外引申出一个问题,STC的MCU内部如何得到时间,特别是能得到精确到ms或us的时间吗?
页: 1 [2] 3
查看完整版本: 延时问题