找回密码
 立即注册
楼主: aoteman

延时问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-05-05 12:36:36
已绑定手机

4

主题

25

回帖

104

积分

注册会员

积分
104
发表于 2025-5-5 12:36:36 | 显示全部楼层
vb2*** 发表于 2025-5-4 19:56
这个不也是阻塞式吗?
程序一直 --

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-05-05 12:36:36
已绑定手机

4

主题

25

回帖

104

积分

注册会员

积分
104
发表于 2025-5-5 12:38:31 | 显示全部楼层
jw*** 发表于 2025-5-5 08:10
这种与程序执行有关,如果有中断的话会有影响,判断逻辑不同时间也可能不同 ...

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-05-05 12:36:36
已绑定手机

4

主题

25

回帖

104

积分

注册会员

积分
104
发表于 2025-5-5 12:39:34 | 显示全部楼层
Debu*** 发表于 2025-5-2 14:40
这种做法,取决于主程序执行频率和中断,并且不是固定值,因为根据条件的不同,程序执行时间也是不同的 ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:464
  • 最近打卡:2025-08-24 00:22:18
已绑定手机

151

主题

1841

回帖

2166

积分

金牌会员

积分
2166
发表于 2025-5-5 12:40:47 | 显示全部楼层
aote*** 发表于 2025-5-5 12:36
这个不算,每次循环只执行一次减法,并不会死等

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-05-05 12:36:36
已绑定手机

4

主题

25

回帖

104

积分

注册会员

积分
104
发表于 2025-5-5 12:41:43 | 显示全部楼层
晓*** 发表于 2025-5-4 22:05
DL在定时器中断里面自减岂不更准,而且也不占用太多中断周期

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

点评

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-05-05 12:36:36
已绑定手机

4

主题

25

回帖

104

积分

注册会员

积分
104
发表于 2025-5-5 12:50:39 | 显示全部楼层
Debu*** 发表于 2025-5-2 14:40
这种做法,取决于主程序执行频率和中断,并且不是固定值,因为根据条件的不同,程序执行时间也是不同的 ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:633
  • 最近打卡:2025-08-24 08:27:12
已绑定手机

54

主题

1893

回帖

3572

积分

论坛元老

积分
3572
发表于 2025-5-5 13:27:50 | 显示全部楼层
我一般在定时器置一堆标志位,要用的地方取其中一个标志位,清零,计数+1
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:624
  • 最近打卡:2025-08-24 10:17:06

122

主题

2068

回帖

6163

积分

论坛元老

积分
6163
发表于 2025-5-5 17:13:32 | 显示全部楼层
我觉得想准确点就用定时器,不想准确的就用阻塞式延时。用阻塞式延时的过程中,所有的中断也应该会响应吧。在大循环中自减,这个延时的时间数值不是很好把握。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-08-24 00:56:18
已绑定手机

40

主题

2410

回帖

3256

积分

荣誉版主

积分
3256
发表于 2025-5-5 18:17:44 | 显示全部楼层
aote*** 发表于 2025-5-5 12:41
如果我1ms中断一次,我觉得太频繁,而且我还要等待别的中断,所以还是不太希望这种不是需要特别精确的延 ...

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:134
  • 最近打卡:2025-08-24 00:13:23
已绑定手机

16

主题

126

回帖

949

积分

高级会员

积分
949
发表于 2025-5-6 03:05:21 | 显示全部楼层
aote*** 发表于 2025-5-5 12:50
我现在不需要考虑其他冗余,比如中断和其他程序,我现在就想知道,我执行比如10的6次方减法,需要多长时 ...

如果条件允许,你看这样能否解决你的问题:
自己写个程序,利用USB库中的printf_usb(),发信息给AIapp-ISP下载软件中的“CDC/HID-串口助手”,利用里面显示的接收时间,调整你要的数值。

另外引申出一个问题,STC的MCU内部如何得到时间,特别是能得到精确到ms或us的时间吗?
学习MCU
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-24 18:02 , Processed in 0.124495 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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