0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

軟件定時器簡介及程序配置

CHANBAEK ? 來源:南山府嵌入式 ? 作者:南山府嵌入式 ? 2022-12-06 16:10 ? 次閱讀

1- 簡介

1.1 軟件定時器簡述

軟件定時器就是允許函數(shù)設(shè)置一定的等待時間,然后執(zhí)行。定時器執(zhí)行的函數(shù)被稱為定時器的回調(diào)函數(shù)。定時器從啟動到執(zhí)行回調(diào)函數(shù)之間的時間稱為定時器的周期。定時器的回調(diào)函數(shù)在定時器的時間到達時執(zhí)行。

軟件定時器要先創(chuàng)建才能使用。

1.2 軟件定時器有效的實現(xiàn)

軟件定時器功能的實現(xiàn)是非常容易的,但是想要有效的實現(xiàn)可能會優(yōu)點困難,FreeRTOS的定時器,不會從中斷中執(zhí)行定時器的回調(diào)函數(shù),除非定時器到達了,否則不會消耗任何的運算時間,不會像時鐘中添加任何的運算負擔,如果中斷禁用了,也不會遍歷任何的鏈表結(jié)構(gòu)。

定時器服務(wù)任務(wù)主要利用了FreeRTOS的一些特性,允許像應(yīng)用程序添加定時器功能,而對于應(yīng)用程序可執(zhí)行的程序影響最小。

1.3 有關(guān)定時器的回調(diào)函數(shù)

定時器回調(diào)函數(shù)在定時器服務(wù)任務(wù)中進行執(zhí)行,所以定時器回調(diào)函數(shù)不要試圖阻塞。比如,定時器回調(diào)函數(shù)在訪問隊列或信號量時不能調(diào)用vTaskDelay()、vTaskDelayUntil()或指定非零阻塞時間。

2- 定時器服務(wù)和定時器命令隊列

計時器功能是可選的,不是FreeRTOS核心內(nèi)核的一部分。相反,它是由定時器服務(wù)任務(wù)提供的。

FreeRTOS提供了一組與定時器相關(guān)的API函數(shù)。其中許多函數(shù)使用標準的FreeRTOS隊列向計時器服務(wù)任務(wù)發(fā)送命令。用于此目的的隊列稱為timer command queue。timer command queue是FreeRTOS定時器實現(xiàn)的私有命令,不能直接訪問。

下圖演示了這種情況。左邊的代碼表示一個函數(shù),它是用戶應(yīng)用程序的一部分,并從作為同一用戶應(yīng)用程序的一部分創(chuàng)建的任務(wù)中調(diào)用。右邊的代碼表示定時器服務(wù)任務(wù)的實現(xiàn)。定時器命令隊列是連接應(yīng)用任務(wù)和定時器服務(wù)任務(wù)的紐帶。在本例中,從應(yīng)用程序代碼調(diào)用xTimerReset() API函數(shù)。這導(dǎo)致將重置命令發(fā)送到定時器命令隊列,由定時器服務(wù)任務(wù)處理。應(yīng)用程序代碼只調(diào)用xTimerReset() API函數(shù)——它沒有(也不能)直接訪問定時器命令隊列。

poYBAGOO-EaABfqsAADtD4Vgwbw653.png

3-軟件定時器程序配置

要使FreeRTOS 軟件計時器 API在應(yīng)用程序中可用,只需:

將 FreeRTOS/Source/timers.c 源文件添加到您的項目中,以及在應(yīng)用程序 FreeRTOSConfig.h 頭文件中定義。下面這個表是一些常量:

pYYBAGOO-FuAaOzyAAGPk18N7Rg346.png

4- 自動沖加載

定時器有兩種類型:單觸發(fā)定時器和自動重新加載定時器。一旦啟動,單觸發(fā)定時器只會執(zhí)行它的回調(diào)函數(shù)一次。它可以手動重新啟動,但不能自動重新啟動。相反,自動重新加載定時器一旦啟動,在每次執(zhí)行回調(diào)函數(shù)后都會自動重新啟動,導(dǎo)致周期性的回調(diào)執(zhí)行。

下圖演示了,單觸發(fā)定時器和自動重載之間的區(qū)別,在此圖中,定時器1為周期等于100的單次定時器,計時器2是自動重加載周期等于200次的定時器。

poYBAGOO-GyASKx4AAC0Gt24NK0955.png

5-定時器的重置

重新設(shè)置已經(jīng)開始運行的定時器。重置定時器會導(dǎo)致定時器重新計算其達到的時間,這種行為在下面的圖中得到了展示,其中定時器1是一個周期為5秒的單觸發(fā)定時器。

poYBAGOO-H6ATd1lAADB0gtm3sk332.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 軟件定時器
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    6719
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3218

    瀏覽量

    113665
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61721
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    87

    瀏覽量

    11508
收藏 人收藏

    評論

    相關(guān)推薦

    基于STM32的軟件定時器設(shè)計

    軟件定時器是用程序模擬出來的定時器,可以由一個硬件定時器模擬出成千上萬個軟件
    發(fā)表于 07-03 17:06 ?878次閱讀
    基于STM32的<b class='flag-5'>軟件</b><b class='flag-5'>定時器</b>設(shè)計

    定時器中斷簡介

    定時器中斷1. 定時器中斷簡介2. 硬件設(shè)計3. 軟件設(shè)計3.1 STM32CubeMX設(shè)置3.2 MDK-ARM編程4. 下載驗證
    發(fā)表于 08-12 06:29

    最簡單的滴答定時器程序簡介

    最簡單的滴答定時器程序簡介SysTick實驗配置步驟和方法1.設(shè)置滴答的次數(shù)2.設(shè)置時長3.停止計數(shù)實驗代碼簡介SysTick—系統(tǒng)
    發(fā)表于 01-20 08:16

    基于Win32的控制軟件定時器程序的編寫

    基于Win32的控制軟件定時器程序的編寫
    發(fā)表于 02-07 18:01 ?9次下載

    stm32定時器中斷程序

    STM32的定時器是個強大的模塊,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做PWM輸出或者輸入捕獲功能。 以下是進行stm32
    發(fā)表于 10-12 16:59 ?1.3w次閱讀

    μC/OS-II的軟件定時器的改進的方法

    1、概述 軟件定時器是一種軟件措施,通過它可以使一項特定的任務(wù)在給定的時間段后被執(zhí)行。軟件定時器廣泛地應(yīng)用于內(nèi)核設(shè)計和應(yīng)用
    發(fā)表于 10-31 16:57 ?0次下載
    μC/OS-II的<b class='flag-5'>軟件</b><b class='flag-5'>定時器</b>的改進的方法

    555定時器應(yīng)用設(shè)計軟件免費下載

    本文檔的主要內(nèi)容詳細介紹的是555定時器應(yīng)用設(shè)計軟件免費下載,本軟件是一款555定時器設(shè)計軟件,使用非常方便。
    發(fā)表于 12-17 08:00 ?51次下載
    555<b class='flag-5'>定時器</b>應(yīng)用設(shè)計<b class='flag-5'>軟件</b>免費下載

    設(shè)計軟件定時器

    軟件定時器搬來使用2、自己設(shè)計軟件定時器這里我只介紹第二種方法,我們知道,硬件定時器是通過對系統(tǒng)時鐘周期進行計數(shù)實現(xiàn)的,那么
    發(fā)表于 11-05 18:35 ?2次下載
    設(shè)計<b class='flag-5'>軟件</b><b class='flag-5'>定時器</b>

    stm32—定時器配置

    目錄定時器組成通用寄存通用寄存簡介:通用定時器 TIMx (TIM2-TIM5 )的功能:通用定時器
    發(fā)表于 11-22 17:51 ?11次下載
    stm32—<b class='flag-5'>定時器</b><b class='flag-5'>配置</b>

    基于硬件定時器軟件定時器

    概括硬件定時器很精確,軟件定時器無論如何都有延遲,主要用在不需要精確定時的地方,而且軟件定時比較
    發(fā)表于 11-25 09:51 ?8次下載
    基于硬件<b class='flag-5'>定時器</b>的<b class='flag-5'>軟件</b><b class='flag-5'>定時器</b>

    ESP32 之 ESP-IDF 教學(三)——通用硬件定時器(Timer)

    、配置定時器【1】定時器初始化函數(shù)`timer_init()`簡介配置結(jié)構(gòu)體`timer_config_t`
    發(fā)表于 11-26 11:36 ?37次下載
    ESP32 之 ESP-IDF 教學(三)——通用硬件<b class='flag-5'>定時器</b>(Timer)

    freeRTOS軟件定時器的使用

    freeRTOS中加入了軟件定時器這個功能組件,是一個可選的、不屬于freeRTOS內(nèi)核的功能,由定時器服務(wù)(其實就是一個定時器任務(wù))來提供。
    的頭像 發(fā)表于 02-10 13:55 ?1866次閱讀

    Free RTOS的軟件定時器

    軟件定時器是FreeRTOS中的一個重要模塊,使用軟件定時器可以方便的實現(xiàn)一些與超時或周期性相關(guān)的功能。
    的頭像 發(fā)表于 02-10 15:53 ?2123次閱讀
    Free RTOS的<b class='flag-5'>軟件</b><b class='flag-5'>定時器</b>

    什么是軟件定時器軟件定時器的實現(xiàn)原理

    軟件定時器是用程序模擬出來的定時器,可以由一個硬件定時器模擬出成千上萬個軟件
    的頭像 發(fā)表于 05-23 17:05 ?2501次閱讀

    定時器中斷程序怎么寫

    定時器中斷程序怎么寫? 在嵌入式系統(tǒng)中,定時器被廣泛應(yīng)用于各種任務(wù)。它們在實時系統(tǒng)中可用于輪詢,計時等任務(wù)。定時器可以被配置為周期性
    的頭像 發(fā)表于 09-01 10:17 ?1765次閱讀