RTX 第17章 定時器組

2022-05-14 12:24:39 字數 2463 閱讀 7039

以下內容**自安富萊電子:

本章節為大家講解 rtx 支援的定時器組,或者叫軟體定時器,或者叫使用者定時器均可。軟體定時器的

功能比較簡單,也容易掌握。 被稱為定時器組是因為使用者可以建立多個定時器,建立的個數是可配置的。

定時器組介紹

rtx 提供的定時器功能僅支援單次定時器,也就是使用者建立了定時器並啟動了定時器後,定時時間到

將不再重新執行,此定時器會被刪除掉並且就執行一次,下次使用要重新的建立,這個就是單次定時器的

含義。 另外就是單次定時時間到後會呼叫定時器的**函式,使用者可以**函式中加入需要執行的工程代

碼。使用此定時器組注意以下問題:

 定時器**函式 os_tmr_call 在檔案 rtx_conf_cm.c 檔案中。

 定時器**函式 os_tmr_call 中僅支援 isr_開頭的系統函式,os_開頭的不支援,因為**函式是在滴

答定時器中斷中執行的。

 rtx 的定時器僅支援單次,不支援週期性執行,如果需要週期執行,需要重複建立。

 可以建立的定時器個數可以在 rtx 配置嚮導中設定:

定時器組 api 函式

使用如下 3 個函式可以實現 rtx 的定時器組:

函式 os_tmr_create

函式原型:

os_id os_tmr_create (

u16 tcnt, /* 定時器的時鐘節拍個數 */

u16 info ); /* 定時器**函式的引數,可用於區分不同的定時器 */

函式描述:

函式 os_tmr_create 用於建立定時器組並啟動定時器,定時時間到後呼叫**函式 os_tmr_call。函式

os_tmr_create 的第二個引數也會傳遞給**函式 os_tmr_call 用於區分不同的定時器。

 第 1 個引數填寫定時器的時鐘節拍個數。 範圍 0-0xffff。

 第 2 個引數填寫**函式的引數,可用於區分不同的定時器。

 定時器建立成功的話會返回定時器的 id 標識,失敗的話返回 null。

函式 os_tmr_call

函式原型:

void os_tmr_call (

u16 info ); /*定時器**函式的引數,可用於區分不同的定時器*/

函式描述:

當函式 os_tmr_create 設定的定時時間到後呼叫**函式 os_tmr_call。函式 os_tmr_create 的第二個參

數也會傳遞給**函式 os_tmr_call 用於區分不同的定時器。此函式執行完畢後,通過函式 os_tmr_create

建立的定時器會被刪除,下次使用需要重新建立。

 此函式的引數不需要使用者去新增,系統會自動將函式 os_tmr_create 第二個引數賦值給這個引數。

**練兵場:

先說一下**的整體設計思路:

首先, 通過按鍵1設定定時器1,定時5s,按鍵2設定定時器2,定時1s。由於rtx的軟體定時器不支援週期性定時,所以需要週期性定時就需要重複建立。

然後在**函式中,如果是定時器1,就傳送訊息,有其他任務接收的,如果是定時器2,就列印定時器2這個字串。

注意**函式在(我們建立的訊號量初始化為0,你就應該猜測到肯定有乙個地方需要傳送訊息的,注意**函式中使用rtx系統函式必須是isr開頭的不能是os開頭的,因為**函式是在滴答定時器中斷中執行的 ):

串列埠輸出如下:

題外話:這樣來看,還是freertos和ucos更強大一點,居然連週期性定時器都不支援。

第五章 定時器Timer

timer類主要作用是是在指定的時間開始執行某一任務,而負責封裝任務的是timertask類 抽象類 我們將執行計畫任務的 放入timertask的子類中。該方法可以規定任務執行的時間 public class run1 public static void main string args cat...

第五章 定時器Timer序言

定時器很重要。上家公司有用的,是用來做定期資料同步的。以前老同學有用到,曾經就定時器討論過一次,還給過一次他我關於spring task的總結。但是並沒有意識到定時器與多執行緒的關係,或者說,上一次再學定時器的時候,還沒有多執行緒方面的一些鋪墊。這次重新學習多執行緒,再與定時器,相信會對定時器有乙個...

python 64式 第6式 定時器

usr bin env python coding utf 8 import logging import sys from datetime import datetime from oslo config import cfg from oslo log import log from oslo...