单片机硬件和软件延时是啥意思?

news/2025/2/14 8:19:09/

软件延时和硬件延时是啥意思?做项目时他俩有什么区别?

今天就来讲讲关于硬件延时和软件延时的内容,以及它们的区别。

硬件和软件延时

延时的种类很多,先给大家普及一下延时相关概念和分类。

1.硬件延时

指利用具有计数功能的硬件进行延时。

比如:定时器(Timer)、 实时时钟(RTC)、 系统滴答定时器(SysTick)等具有计数功能的硬件。

2.软件延时

相对硬件延时而言,软件延时就是写一段软件代码,通过消耗CPU时间进行延时。

比如软件延时函数:

void Delay(uint32_t Cnt){  uint32_t i;
  while(Cnt--)  {    for(i=0; i<0x80000; i++);  }}

阻塞和非阻塞延时

实际应用中,延时分阻塞和非阻塞延时。

1.阻塞延时

指CPU一直停留阻塞,不去做其它事情,直到延时结束结束。

像上面那个软件延时(Delay)就是一个典型的阻塞延时,一直消耗CPU,直到延时结束。

2.非阻塞延时

指在延时期间,没有阻塞CPU,也就是说CPU在延时期间可以执行其它代码。

比如:利用定时器中断延时,只需要开启定时器,在中断(计数)到来之前,CPU可以执行其它代码。

3.额外举例

a.利用定时器也能实现阻塞延时,比如STM32的HAL自带的阻塞延时:

__weak void HAL_Delay(uint32_t Delay){  uint32_t tickstart = HAL_GetTick();  uint32_t wait = Delay;
  /* Add a freq to guarantee minimum wait */  if (wait < HAL_MAX_DELAY)  {    wait += (uint32_t)(uwTickFreq);  }
  while ((HAL_GetTick() - tickstart) < wait)  {  }}

b.利用RTOS自带的系统延时实现非阻塞延时,这个实现原理实际是利用了硬件延时(系统滴答定时器)。

当然,这个延时的原理(延时函数代码)相对比较复杂,对于普通用户只需要知道如何调用以及简单原理即可,感兴趣的老铁可以自行研究一下。

通常在一些RTOS的(Demo)例子的任务中都有系统延时,比如ucos非阻塞延时:

OSTimeDly(10);

再比如FreeRTOS非阻塞延时:

vTaskDelay(10);

关于RTOS的延时,这里额外拓展一下关于RTOS中的相对延时和绝对延时的内容,请移步至文章《RTOS中相对延时和绝对延时的区别》

硬件和软件延时区别

通过以上分析,其实不难得出,硬件延时相对软件延时更普遍。

1.软件相对硬件延时精度更差;

2.软件延时为阻塞延时,硬件延时可阻塞,也可非阻赛延时;

3.硬件延时应用更灵活、更广泛;

......

实际应用中,硬件延时、非阻塞延时相对更普遍。


http://www.ppmy.cn/news/2272.html

相关文章

基于jsp+mysql+ssm学生网上请假系统-计算机毕业设计

项目介绍 随着高校招生规模的逐步扩大和教学方式的改革&#xff0c;在校学生人数将不断增加。另一方面&#xff0c;我国高等学校基层学生考核工作的内容杂&#xff0c;管理细&#xff0c;要求高&#xff0c;头绪多&#xff0c;传统的手工档案式管理办法已基本不适应新形势的要…

html实训大作业《基于HTML+CSS+JavaScript红色文化传媒网站(20页)》

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

最优化方法——QR分解

目录 系列文章目录 一、问题 二、实验思路综述 1.实验工具及算法 2.实验数据 3.实验目标 4.实验步骤 三、相关线性代数知识导入 1.线性无关与基 2.标准正交 3.Gram-Schmidt(正交化)算法 四、QR分解 1.Gram-Schmidt QR 1.1 算法原理 1.2 算法流程 1.3 复杂度分析…

Leetcode682:棒球比赛

原文链接&#xff1a;682. 棒球比赛 - 力扣&#xff08;LeetCode&#xff09; 题目 你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成&#xff0c;过去几回合的得分可能会影响以后几回合的得分。 比赛开始时&#xff0c;记录是空白的。你会得到一个记录操作的…

2022最后一个月,我们该如何学Java​?

2022最后一个月&#xff0c;我们该如何学Java&#xff1f; 互联网的快速发展和激烈竞争&#xff0c;在世界编程语言排行榜中&#xff0c;Java位列前三&#xff0c;占全球编程市场份额的12%左右,各大公司对Java工程师的需求量都很大&#xff0c;要求也越来越高&#xff0c;优秀…

《MongoDB》Mongo Shell中的基本操作-删除操作一览

前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 来个关注吧&#xff0c;点个赞…

Docker: 小白之路九(从0搭建自己的Docker环境centos7)

Docker环境配置centos7版本 一. 配置对应的docker环境和nvidia-docker(注意加速镜像设置) 二. 环境配置 1. 拉取对应的镜像 docker pull nvidia/cuda:10.2-cudnn7-devel-centos72. 创建新版本的容器并搭建对应的环境 docker run -it --name felaim_sever_centos7 nvidia/c…

[python] 基于wordcloud库绘制词云图

词云Wordcloud是文本数据的一种可视化表示方式。它通过设置不同的字体大小或颜色来表现每个术语的重要性。词云在社交媒体中被广泛使用&#xff0c;因为它能够让读者快速感知最突出的术语。然而&#xff0c;词云的输出结果没有统一的标准&#xff0c;也缺乏逻辑性。对于词频相差…