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】欢迎添加关注!文章转载请注明出处。

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

    关注

    6037

    文章

    44558

    浏览量

    635195
  • 嵌入式
    +关注

    关注

    5082

    文章

    19123

    浏览量

    305129
  • 延时
    +关注

    关注

    0

    文章

    107

    浏览量

    25531
  • 硬件
    +关注

    关注

    11

    文章

    3328

    浏览量

    66217
  • 软件
    +关注

    关注

    69

    文章

    4943

    浏览量

    87473

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

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

收藏 人收藏

    评论

    相关推荐

    STM32单片机延时原理和延时函数方法

    当涉及到单片机编程时,延时是一项常见但关键的任务。在许多应用中,我们需要控制程序暂停一段时间,以实现精确的时间控制或协调不同设备之间的操作。本文将以STM32为例,介绍关于单片机延时
    发表于 08-09 09:13 1.8w次阅读

    单片机的特点与分类概述

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

    单片机C 语言的精确延时程序设计

    单片机C 语言的精确延时程序设计
    发表于 05-16 14:50 47次下载

    基于单片机+CPLD的多路精确延时控制系统设计

    根据多路精确延时控制系统的设计参数指标,利用单片机和CPLD的功能特性与片上资源,设计了基于CPLD与多个单片机的多路精确延时控制系统,实现了多路独立调整、显示,并能输出
    发表于 12-16 16:15 43次下载

    PIC 8位单片机分类和特点

    PIC 8位单片机分类和特点 PIC单片机教程 -PIC 8位单片机分类和特点  由美国Microchip公司推出的P
    发表于 03-27 17:07 2098次阅读

    单片机分类

    单片机分类介绍:      51系列单片机       51系列单片机
    发表于 07-03 11:48 3042次阅读

    单片机延时计算小程序

    电子发烧友网站提供《单片机延时计算小程序.zip》资料免费下载
    发表于 09-17 17:24 6次下载

    51单片机汇编语言教程_单片机延时程序分析

    51单片机汇编语言教程:5课单片机延时程序分析
    发表于 01-19 15:26 0次下载

    单片机延时计算小程序

    单片机延时计算小程序
    发表于 12-01 16:44 2次下载

    单片机延时计算小程序

    单片机延时计算小程序
    发表于 12-28 11:07 6次下载

    单片机延时函数的资料合集免费下载

    本文档的主要内容详细介绍的是单片机延时函数的资料合集免费下载包括了:1.51单片机延时,晶振为11.0592MHz,(粗略延时,定时器
    发表于 08-02 17:34 8次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>延时</b>函数的资料合集免费下载

    【Practical】51单片机软件延时1S

    51单片机软件延时1S
    发表于 11-12 14:51 13次下载
    【Practical】51<b class='flag-5'>单片机</b>软件<b class='flag-5'>延时</b>1S

    单片机延时问题20问

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

    STM32单片机SysTick实现精确延时

    STM32单片机SysTick实现精确延时
    发表于 11-23 18:21 11次下载
    STM32<b class='flag-5'>单片机</b>SysTick实现精确<b class='flag-5'>延时</b>

    关于单片机分类

    作为一个接触单片机编程工作多年的硬件研发人员,简单的谈下我心里的单片机分类
    发表于 02-10 10:38 3次下载
    关于<b class='flag-5'>单片机</b><b class='flag-5'>分类</b>