单片机使用循环来实现延时和定时器延时的区别是什么?

单片机,可以用循环延迟也可以用定时器。很多人说,唯一的区别浪费多少算力,话没毛病但不符合场景。只有追求实时性好,成本低的项目才会使用单片机。否则,我为什么不上一个资源更好,单位周期更快,甚至多线程的SOC呢?

刚好我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」,

点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!


如果从真正的实用角度出发,你就知道我们追求的是“快速响应”也就是所谓的“实时性”。也是区分与Linux叫实时操作系统的ROS。

那么问题来了,已知:传统的ARM与单片机 均采用流水线式作业,即:

TASK执行,只能为执行一项完成后再执行一项。但是,硬件上留有余地。我们可以用中断来提高实时性。但是,我觉得还不够好,所以我们还可以采用软件的优先级,来打断现在干活的。本质上,都指向一个原则,为更高优先级的任务,做事最快速度的回应。

那我们再看两种延迟方式,一种死等,再等的过程中不允许做其它事情。一种设置一个闹钟,先去做其他的事情,等闹钟叫了,我再回来继续做(类似于线程的操作)。两种方式,那个跟贴近于提高实时性呢?显然是第二种。

所以,效率是有一定程度上的提高。可不是人们最终期望,但是可以再等的时候去及时的响应其它的事情,这个一定给整个系统带来的。响应程度的提高,因为程序再执行过程中,你并不知道等待的过程中会触发那个更高优先级的任务。所以,这种提升远比想象的提升更为巨大。

TIPS:其实早期的手机系统IOS,并不一定在很多场景比安卓的运行效率高。但是,IOS通过一种简单的方式,即:“永远优先响应”用户的操作。导致了,所有人都认为IOS流畅程度远大于安卓。一直到安卓8以后,安卓也采用的类似的策略。一直到今天,人们已经很难从各种细节证明IOS比安卓更流畅。78e8f0118e4df5bc82268c8a9920e127.jpeg

相关推荐

  1. 订单实现

    2024-06-07 10:32:01       29 阅读
  2. 使用Redis实现队列

    2024-06-07 10:32:01       33 阅读
  3. STM32系统滴答定时器SysTick实现精确msus

    2024-06-07 10:32:01       55 阅读
  4. 单片机如何实现1ms或者1us

    2024-06-07 10:32:01       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 10:32:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 10:32:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 10:32:01       82 阅读
  4. Python语言-面向对象

    2024-06-07 10:32:01       91 阅读

热门阅读

  1. GaussDB 数据库的事务管理

    2024-06-07 10:32:01       22 阅读
  2. Python语言回归:深入探索与实战应用

    2024-06-07 10:32:01       29 阅读
  3. 8086 汇编笔记(十一):内中断

    2024-06-07 10:32:01       33 阅读
  4. OC和Swift的区别,发送消息和执行方法的区别

    2024-06-07 10:32:01       28 阅读
  5. AWS Load Balancer Controller 实践

    2024-06-07 10:32:01       32 阅读
  6. iOS查看、分离、合并库framework的架构

    2024-06-07 10:32:01       27 阅读
  7. 图论第5天

    2024-06-07 10:32:01       33 阅读
  8. WPF 按键图标缩放动画示例

    2024-06-07 10:32:01       26 阅读
  9. 推箱子小游戏C++

    2024-06-07 10:32:01       37 阅读