五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《二》canfestival的軟件定時器分析

2021-08-12 19:19 作者:GXTon_阿通  | 我要投稿

canfestival中的時間是靠一個硬件定時器完成的.

這個硬件定時器還需要配置成中斷模式,

在中斷里面加入canfestival編寫好的接口函數(shù):TimeDispatch();.

這個函數(shù)是用來輪詢檢測各個軟件定時器有沒有被觸發(fā).

觸發(fā)之后完成所對應(yīng)的不同動作(通過回調(diào)函數(shù))

比如完成pdo,sdo,同步幀等的發(fā)送.

所以,時間對于canfestival很重要,因為發(fā)送pdo,sdo或同步幀等,每個事件和動作,都需要軟件定時器驅(qū)動.


所以需要配置一個硬件定時器.

計算出硬件定時器每次增加1消耗多長時間.

canfestival中的最小時間單元就是硬件定時器計數(shù)加1的耗時.

canfestival中的時間也都是按照計數(shù)的個數(shù)去計算的.

在canfestival中,會有ms和us,這兩個時間需要進行系數(shù)的設(shè)置.比如定時器1us計數(shù)一次.

那么us的系數(shù)就是1;ms的系數(shù)就是1000;如下圖,需要根據(jù)你的硬件定時器去配置兩個系數(shù):

(在timerscfg.h文檔中)

其實就是宏定義,對計數(shù)進行轉(zhuǎn)換,最終時間走的還是硬件定時器的計數(shù).

這時,canfestival就有了us和ms基準,它的時間準不準,主要看配的系數(shù)好不好.


硬件定時器的周期會被canfestival進行改變.

比如下面的B事件.

下面,原有定時器周期1000,

TIMEVAL_MAX也是1000.(在timerscfg.h文檔中)

B事件時間的周期是3500.

那么canfestival會把硬件定時器修改為下圖中的第二個圖形.

如果調(diào)小TIMEVAL_MAX的值,那么canfestival會把硬件定時的周期進行調(diào)小修改.變成下圖中第三個圖形.



那么一個硬件定時器如何產(chǎn)生多個軟件定時器.

canfestival會更加快速的改變硬件定時器的觸發(fā)周期,從而保證A和B的溢出事件都不會錯過.

具體代碼查看:

TimeDispatch();


TimeDispatch();

這個函數(shù)是canfestival的最外層接口函數(shù).

需要把它放入到硬件定時器中斷里面,進行調(diào)用.

它的作用是輪詢檢測多個軟件定時器,查看有無軟件定時器需要觸發(fā).

如果觸發(fā)就執(zhí)行響應(yīng)的回調(diào)函數(shù).

它的具體執(zhí)行流程為:

執(zhí)行流程:

軟件定時器觸發(fā)之后,會執(zhí)行row->callback.

這里就是回調(diào)函數(shù).

在這里會發(fā)送pdo或sdo等

一切活動都是在中斷里面完成的,主函數(shù)切換到總線開啟,進入空循環(huán)就行.

進入TimeDispatch();你會發(fā)現(xiàn)還有兩個函數(shù)需要進行編寫.

需要按照自己的開發(fā)環(huán)境去配置.

下面是以stm32單片機為例.


《二》canfestival的軟件定時器分析的評論 (共 條)

分享到微博請遵守國家法律
肇庆市| 河北区| 苍山县| 繁昌县| 揭东县| 民权县| 三河市| 文水县| 灵寿县| 武邑县| 藁城市| 孟连| 麻阳| 弥勒县| 鄂温| 壤塘县| 桂阳县| 东阿县| 西乌珠穆沁旗| 徐水县| 寻甸| 岫岩| 甘谷县| 五华县| 枞阳县| 金平| 林甸县| 布尔津县| 普安县| 古田县| 娱乐| 汝南县| 泽州县| 德保县| 锡林郭勒盟| 寿阳县| 安义县| 普安县| 永平县| 苏州市| 大竹县|