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

同样是阻塞延时,不同人的理解是相反的?一度让我迷惑不解

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:445
  • 最近打卡:2025-04-30 07:32:43

9

主题

85

回帖

1654

积分

金牌会员

积分
1654
发表于 2024-5-30 08:48:41 | 显示全部楼层
数码管的动态显示有用到delay_ms()函数,主要是数码的位与位切换时必须要用1个很小的延时,如果不加延时,数码码就会显示88888888。这里的延时是必须的,是利用人眼的视觉残留效应。

而32G单片机,我们可以用定时器来制作1个状态机,如按键的单击,长按,松开等。利用定时器的中断我们可以提高CPU的工作效率,设定好时间后我们可以定时去中断执行函数里查询是否满足执行条件。
如定时为1ms,我们可以10ms进入1个判定函数,100ms进入1个判定函数,1000ms进入1个判定函数。
而delay_ms()则是把我们的程序堵在这里了,必须要这个时间达到后才能继续下面的步骤。
但要注意的是定时一定要合理,如果太频繁进入中断(时间超级短),会导致主程序中的程序得不到执行,一直在循环定时函数中。这是我个人的理解。
永远相信美好的事情即将发生!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:459
  • 最近打卡:2025-05-01 10:40:06

2

主题

36

回帖

848

积分

高级会员

积分
848
发表于 2024-5-30 09:37:48 | 显示全部楼层
动态显示从来没有用到delay
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-5-30 11:36:59 来自手机 | 显示全部楼层
一个MCU一直在干活一个边玩边干!
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:24 , Processed in 0.371043 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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