<thead id="z0mri"></thead>

<button id="z0mri"></button>
<rp id="z0mri"></rp>

  • <tbody id="z0mri"><pre id="z0mri"><i id="z0mri"></i></pre></tbody>
  • <ol id="z0mri"><object id="z0mri"></object></ol>
      • IIANews微官网
        扫描二维码 进入微官网
        IIANews微信
        扫描二维码 关注微信
        移动客户端
      • English
      进博会专题
      嵌入式系统

      MCU硬件延时和软件延时有什么区别?

        2021年06月23日  

      图片源于网络

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

      硬件和软件延时

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

      1.硬件延时

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

      2.软件延时

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

      阻塞和非阻塞延时

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

      1.阻塞延时

        指CPU一直停留阻塞,不去做其它事情,直到延时结束结束。像上面那个软件延时(Delay)就是一个典型的阻塞延时,一直消耗CPU,直到延时结束。

      2.非阻塞延时

        指在延时期间,没有阻塞CPU,也就是说CPU在延时期间可以执行其它代码。比如:利用定时器中断延时,只需要开启定时器,在中断(计数)到来之前,CPU可以执行其它代码。

      3.额外举例

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

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

        当然,这个延时的原理(延时函数代码)相对比较复杂,对于普通用户只需要知道如何调用以及简单原理即可。通常在一些RTOS的(Demo)例子的任务中都有系统延时,比如ucos非阻塞延时:

        再比如FreeRTOS非阻塞延时:

      硬件和软件延时区别

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

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

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

      标签:嵌入式  MCU  我要反馈
      最新视频
      柯尔柏医药科技亮相2023CIPM药机展   
      GEA百年技术,助力制药行业整“装”待发   
      第四季施耐德电气绿色智能制造创赢计划
      为什么要使用在线热像仪进行温度监测?
      解锁高效运营 实现灵活控制及可视化
      西克
      专题报道
      ABB 电气自动化业务专栏
      ABB 电气自动化业务专栏 2023年,ABB电气自动化业务推出以“匠心致品”质,智创共未来”为主题的云上俱乐部系列活动,通过云直播及专栏分享,针对特色产品及解决方案进行细品深研,为客户提供一个知识共享和思想碰撞的平台,以ABB技术积累和创新支持客户的转型升级。
      企业通讯
      话
      话"魏"来数字化从自动化的现实到智能化的未来

      5月30日,魏德米勒将携手《亚洲控制工程》共聚话“魏”来直播间,以“数字化——从自动化的现实到智能化的未来”为话题,深入

      ABB智能型电动机起动与保护方案,为电机带来新生机
      ABB智能型电动机起动与保护方案,为电机带来新生机

      电动机耗用了全球大约三分之一的电力。电动机的可靠运行对我们的现代生活起着重要的作用。作为一家全球性电气产品供应商,ABB

      在线会议
      热门标签

      社区

      办公室A片在线观看视频

      <thead id="z0mri"></thead>

      <button id="z0mri"></button>
      <rp id="z0mri"></rp>

    1. <tbody id="z0mri"><pre id="z0mri"><i id="z0mri"></i></pre></tbody>
    2. <ol id="z0mri"><object id="z0mri"></object></ol>