<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > 系統節拍與軟件定時(shí)器-嵌入式微系統連載之八

系統節拍與軟件定時(shí)器-嵌入式微系統連載之八

作者: 時(shí)間:2014-09-15 來(lái)源:網(wǎng)絡(luò ) 收藏

  系統節拍是非常重要的一個(gè)設備,在早期的和ARM7芯片中,沒(méi)有專(zhuān)門(mén)的系統節拍,往往由一路硬件來(lái)實(shí)現其功能,到了Cortex系列,ARM提供了Systick硬件專(zhuān)門(mén)用于系統節拍,可見(jiàn)現在的編程對系統節拍的依賴(lài)性。

本文引用地址:http://dyxdggzs.com/article/262929.htm

  系統節拍的概念比較早的出現在OS中,產(chǎn)生固定間隔的重復中斷,用于任務(wù)的超時(shí)等待或者任務(wù)延時(shí)多少個(gè)節拍周期用。在前后臺系統中,也引入了系統節拍,比如msOS-Mcu51版本很早就引入了系統節拍,實(shí)現按鍵掃描、虛擬等功能。此外還有一種基于時(shí)間片編程的架構,直接采用系統節拍來(lái)處理一些對時(shí)間精度要求比較高的需求。常用時(shí)間間隔是5mS或者10mS,也就是說(shuō)每秒鐘200次或者100次節拍。隨著(zhù)處理器速度的提高,尤其是在一些控制要求高的地方,可以采用1mS,msOS甚至采用了0.1mS的高頻率系統節拍。這個(gè)具體的時(shí)間間隔跟項目需求有關(guān),可以根據自己的項目靈活配置,但在滿(mǎn)足需求的情況下,不建議設置的太高,否則影響處理器效率。

  msOS中的很多設備,都需要基于系統節拍來(lái)運行,比如按鍵、軟件定時(shí)器。這些設備不需要太高的系統時(shí)鐘,按鍵只需要每秒鐘100次,軟件定時(shí)器需要每秒鐘1000次節拍,但msOS因為面向時(shí)間精度要求比較高的行業(yè),所以默認的系統節拍時(shí)間間隔設置的很短,達到0.1ms,也就是說(shuō)一秒鐘一萬(wàn)次節拍。所以需要對系統節拍進(jìn)行分頻處理,但因為系統節拍真實(shí)的間隔是0.1ms,以STM32工作在72MHz為例,這么短的時(shí)間最多只能執行7200個(gè)CPU指令,為了防止各個(gè)低速設備都擠在同一個(gè)系統節拍內運行,超過(guò)7200個(gè)指令,所以在分頻的時(shí)候,不要把所有的設備都放在同一個(gè)節拍里面,需要把各個(gè)設備分散到各個(gè)節拍中運行。

  Device_systick.c是系統節拍設備,它除了分散節拍直接調用固定的運行在其上的設備外,還提供了注冊機制給上層應用程序提供系統節拍,具體如下:

  

 

  

 

  定時(shí)器是一個(gè)項目中經(jīng)常用到的設備,比如動(dòng)畫(huà)設計、鬧鐘、定時(shí)工作、超時(shí)處理等。然而一個(gè)處理器往往自帶的硬件定時(shí)器是非常有限的,并且功能也比較有限,不能靈活應用,所以需要通過(guò)系統節拍虛擬出多路軟件定時(shí)器。

  軟件定時(shí)器主要定時(shí)器服務(wù)、啟動(dòng)、停止三個(gè)函數組成,默認支持8個(gè)軟件定時(shí)器,以下面代碼為例加以說(shuō)明。

  

 

  FunctionCallback為定時(shí)器超時(shí)后的回調執行函數,是軟件定時(shí)器初始化的第三個(gè)參數,超時(shí)時(shí)間到就執行這個(gè)函數,第二個(gè)參數1000為超時(shí)的時(shí)間,單位是軟件定時(shí)器的系統時(shí)鐘,msOS采用的是1mS,1000也就是一秒鐘。第一個(gè)參數為回調函數執行的位置,TimerMessageHandle表示在業(yè)務(wù)邏輯中執行,適合處理代碼量大的,處理時(shí)間長(cháng)的函數。TimerSystickHandle表示在系統節拍中直接處理,系統節拍內一般適合代碼量少的,處理時(shí)間短的函數。軟件定時(shí)器功能非常有用,它的結構也非常簡(jiǎn)單,用戶(hù)看懂之后可以任意擴展其功能完成自己特殊的用途。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>