stm32滴答计时器_stm32中的系统滴答定时器使用
系統(tǒng)滴答定時器對于stm32的初學(xué)者來說還是非常重要的,因為隨著你學(xué)習(xí)的深入編程過程中肯定會調(diào)用延時函數(shù),比如我之前的一些gpio相關(guān)的實驗中。那么延時函數(shù)的編寫也是幾種方法的,一般開始接觸都是讓系統(tǒng)循環(huán)等待,利用stm32處理程序所用的機器時間去延時。這種延時函數(shù)如下圖所示:
很顯然這是一個弊端很明顯的做法,因為在延時函數(shù)進行時系統(tǒng)無法進行其它操作,這樣大大降低了系統(tǒng)的效率。所以我們一般在編程中都會去利用定時器去定時。下面我就介紹下用系統(tǒng)滴答定時器的方法。
SysTick定時器(系統(tǒng)滴答定時器)是一個倒計時定時器,被捆綁在NVIC中,用于產(chǎn)生SYSTICK異常(異常號:15)。在以前,大多操作系統(tǒng)需要一個硬件定時器來產(chǎn)生操作系統(tǒng)需要的滴答中斷,作為整個系統(tǒng)的時基。例如,為多個任務(wù)許以不同數(shù)目的時間片,確保沒有一個任務(wù)能霸占系統(tǒng);或者把每個定時器周期的某個時間范圍賜予特定的任務(wù)等,還有操作系統(tǒng)提供的各種定時功能,都與這個滴答定時器有關(guān)。因此,需要一個定時器來產(chǎn)生周期性的中斷,而且最好還讓用戶程序不能隨意訪問它的寄存器,以維持操作系統(tǒng)“心跳”的節(jié)律。SysTick定時器能產(chǎn)生中斷,CM3為它專門開出一個異常類型,并且在向量表中有它的一席之地。它使操作系統(tǒng)和其它系統(tǒng)軟件在CM3器件間的移植變得簡單多了,因為在所有CM3產(chǎn)品間對其處理都是相同的。SysTick定時器能產(chǎn)生中斷,CM3為它專門開出一個異常類型,并且在向量表中有它的一席之地。它使操作系統(tǒng)和其它系統(tǒng)軟件在CM3器件間的移植變得簡單多了,因為在所有CM3產(chǎn)品間對其處理都是相同的。該定時器用法也相對簡單,主要它由4個寄存器來控制。其用法步驟如下:
1、配置時鐘源,選擇外部時鐘(STCLK)還是內(nèi)部時鐘(FCLK),時鐘分頻等
2、計算重載值,并賦值給SysTick重裝載數(shù)值寄存器重載值*系統(tǒng)周期=中斷周期
3、開中斷
4、使能SysTick定時器
具體編程實現(xiàn)過程如下圖:
本網(wǎng)站轉(zhuǎn)載的所有的文章、圖片、音頻視頻文件等資料的版權(quán)歸版權(quán)所有人所有,本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如果本網(wǎng)所選內(nèi)容的文章作者及編輯認為其作品不宜公開自由傳播,或不應(yīng)無償使用,請及時通過電子郵件或電話通知我們,以迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。
總結(jié)
以上是生活随笔為你收集整理的stm32滴答计时器_stm32中的系统滴答定时器使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: __stdcall c++ 默认_JMe
- 下一篇: 【MongoDB 工具篇】MongoDB