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

延时问题

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

4

主题

25

回帖

104

积分

注册会员

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

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

使用道具 举报 送花

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

4

主题

25

回帖

104

积分

注册会员

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

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

使用道具 举报 送花

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

4

主题

25

回帖

104

积分

注册会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:359
  • 最近打卡:2025-05-10 00:06:03
已绑定手机

132

主题

1573

回帖

2053

积分

金牌会员

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

好吧,没有while ..就不会死等
回复 支持 反对

使用道具 举报 送花

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

4

主题

25

回帖

104

积分

注册会员

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

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

点评

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

使用道具 举报 送花

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

4

主题

25

回帖

104

积分

注册会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:526
  • 最近打卡:2025-05-09 08:02:13
已绑定手机

48

主题

1755

回帖

2750

积分

金牌会员

积分
2750
发表于 5 天前 | 显示全部楼层
我一般在定时器置一堆标志位,要用的地方取其中一个标志位,清零,计数+1
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:528
  • 最近打卡:2025-05-09 08:05:09

109

主题

1936

回帖

5364

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-10 00:15:53
已绑定手机

35

主题

2113

回帖

2271

积分

荣誉版主

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

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-05-10 01:06:54
已绑定手机

14

主题

108

回帖

466

积分

中级会员

积分
466
发表于 4 天前 | 显示全部楼层
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-5-10 03:22 , Processed in 0.124146 second(s), 121 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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