以下內容**自安富萊電子:
本章節為大家講解 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...