0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机延时的相关概念和分类

Q4MP_gh_c472c21 来源:嵌入式专栏 作者:strongerHuang 2022-05-11 13:23 次阅读

嵌入式项目中,软件开发基本上都会使用到延时,那么,该用软件延时还是硬件延时?它们又有什么区别呢?

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

硬件和软件延时

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

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);

ca338d28-d0e7-11ec-bce3-dac502259ad0.png

再比如FreeRTOS非阻塞延时:

vTaskDelay(10);

ca5d3f06-d0e7-11ec-bce3-dac502259ad0.png

硬件和软件延时区别

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

软件相对硬件延时精度更差;软件延时为阻塞延时,硬件延时可阻塞,也可非阻赛延时;硬件延时应用更灵活、更广泛......

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

原文标题:一文弄懂单片机硬件与软件延时的区别

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5996

    文章

    43941

    浏览量

    620341
  • 嵌入式
    +关注

    关注

    4975

    文章

    18228

    浏览量

    287681
  • 延时
    +关注

    关注

    0

    文章

    106

    浏览量

    25209
  • 硬件
    +关注

    关注

    11

    文章

    2917

    浏览量

    64708
  • 软件
    +关注

    关注

    67

    文章

    4336

    浏览量

    85539

原文标题:一文弄懂单片机硬件与软件延时的区别

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机相关概念(1)#单片机

    单片机存储
    未来加油dz
    发布于 :2023年07月31日 22:34:40

    单片机延时小程序

    单片机延时小程序[hide][/hide]
    发表于 01-02 18:10

    请教个单片机延时的问题

    我看了个在1602上显示字符串的代码,看到要用到延时程序。我上网查了下,说单片机的速度相对很多外设来说已经很高了,必须加延时才能与外设匹配。我现在有个疑问:单片机
    发表于 11-11 16:32

    各种单片机常见的延时与中断问题及解决方法

    [td] 延时与中断出错,是单片机新手在单片机开发应用过程中,经常会遇到的问题,本文汇总整理了包含了MCS-51系列单片机、MSP430单片机
    发表于 01-18 06:12

    单片机常见的延时与中断问题及解决方法

    延时与中断出错,是单片机新手在单片机开发应用过程中,经常会遇到的问题,本文汇总整理了包含了MCS-51系列单片机、MSP430单片机、C51
    发表于 02-22 06:00

    单片机常用的概念

    单片机的8个常用概念
    发表于 03-29 06:25

    单片机概念是什么

    第一节、基础知识一、单片机概念1、单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即
    发表于 07-13 07:54

    单片机延时1秒的延时程序

    单片机延时1秒的延时程序,简介:延时与中断出错,是单片机新手在单片机开发应用过程中,经常会遇到的
    发表于 07-14 07:47

    单片机的基本概念

    单片机的基本概念1.1单片机的组成*由CPU、RAM(随机存储器)、ROM(只读存储器)、I/O接口、以及内部功能部件组成。1.2单片机内部数据传输*
    发表于 07-21 08:13

    单片机延时程序的延时时间怎么算的

    单片机延时程序的延时时间怎么算的?51单片机延时500ms用机器周期叠加怎么算?
    发表于 09-24 08:52

    单片机中断的基本概念

    文章目录一.中断的基本概念二.中断相关的寄存器三.中断的实际使用四.中断的优点:一.中断的基本概念1.中断的概念:在单片机中,中断是指:对于
    发表于 11-25 08:14

    单片机的特点与分类概述

    第一章 单片机概述1.1 单片机概念1.2 单片机的特点1.3 单片机的发展1.4 单片机
    发表于 01-19 06:41

    单片机流水灯的相关资料推荐

    单片机c51流水灯实验实验一跑马灯实验一、实验目的1、熟悉HNIST-2型单片机系统相关硬件电路,程序下载方法;2、掌握采用汇编语言与C语言开发单片机系统的程序结构;3、掌握51系列
    发表于 01-24 08:25

    主要介绍STM32单片机的GPIO口基本概念

    与51单片机相比较为复杂,使用前必须操作相关寄存器完成对IO口的初始化配置(单片机内部会选择不同的硬件电路连接)分别为4输入 + 2 输出 + 2 复用输出,一共是8种模式,以下是八种模式的
    发表于 02-22 07:30

    单片机延时问题20问

    简介:延时与中断出错,是单片机新手在单片机开发应用过程中,经常会遇到的问题,本文汇总整理了包含了MCS-51系列单片机、MSP430单片机
    发表于 11-13 21:06 4次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>延时</b>问题20问