<strike id="d8ab4"></strike>
  • <rp id="d8ab4"></rp>
    <span id="d8ab4"></span>
      <em id="d8ab4"><samp id="d8ab4"></samp></em>
    1. <s id="d8ab4"><samp id="d8ab4"><listing id="d8ab4"></listing></samp></s>
      <span id="d8ab4"><pre id="d8ab4"></pre></span>

        • IIANews微官網
          掃描二維碼 進入微官網
          IIANews微信
          掃描二維碼 關注微信
          移動客戶端
        • English
        2021 IAS展
        嵌入式系統

        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  我要反饋
        最新視頻
        全球首個新冠病毒自動檢測站誕生   
        RoboView | 仙工智能視覺 AI 解決方案   
        世強
        輕松上手,直擊振動故障根源
        MOXA工業網絡新品發布會
        西克
        福祿克:最大程度降低工業以太網/生產線停工時間
        專題報道
        《建筑是凝固的音樂》ABB電氣系列大片上映
        《建筑是凝固的音樂》ABB電氣系列大片上映 ABB 網羅了遍布全球的創新建筑案例,通過精心制作的《建筑是凝固的音樂》系列視頻,向大家揭秘世界上一些獨特建筑及其建筑師的幕后故事,帶領大家一起領略那些歷久彌新、永不過時的建筑設計和解決方案。
        企業通訊
        SICK 安全激光掃描儀 microScan3
        SICK 安全激光掃描儀 microScan3

        microScan3 西克SICK 安全激光掃描儀:創新掃描技術 safeHDDM?經由以太網接口提供高度精確的測量數據

        在線會議

        社區

        <strike id="d8ab4"></strike>
      1. <rp id="d8ab4"></rp>
        <span id="d8ab4"></span>
          <em id="d8ab4"><samp id="d8ab4"></samp></em>
        1. <s id="d8ab4"><samp id="d8ab4"><listing id="d8ab4"></listing></samp></s>
          <span id="d8ab4"><pre id="d8ab4"></pre></span>