Systick時鐘-創(chuàng)新互聯

我們在寫單片機程序時,最常用的一個函數就是延時函數,很多情況下,都需要我們產生一個延時,如果此時,程序對延時的精確程度較高,顯然一般的延時函數并不能滿足我們的需求,那我們該怎么辦呢?這個時候,Systick定時器就是它發(fā)揮作用的時候了。

武安網站建設公司成都創(chuàng)新互聯公司,武安網站設計制作,有大型網站制作公司豐富經驗。已為武安上千提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿網站制作要多少錢,請找那個售后服務好的武安做網站的公司定做!

  什么是Systick定時器呢?簡而言之,它是stm32內部系統(tǒng)滴答定時器,并且它是24位倒計時定時器,作用就是能夠產生精確的延時時間。當計數到0時,它自動從一個叫做RELOD寄存器中自動加載數值。眾所周知,我們想要驅動定時器,需要一個時鐘才能驅動,而Systick定時器的時鐘比較特殊,它的時鐘來源是系統(tǒng)時鐘。Systick有兩種獲得系統(tǒng)時鐘的方式,一種是直接取自系統(tǒng)時鐘,另一種是將系統(tǒng)時鐘8分頻,然后再賦值給Systick定時器。

  Systick定時器是屬于CM3內核的外設,所有基于CM3內核的單片機都具有這個系統(tǒng)定時器。系統(tǒng)定時器一般用于操作系統(tǒng),用于產生時基,維持操作系統(tǒng)的心跳。

  這里先來講講Systick最基礎的用法---精確產生一個延時。這里,就讓它延時1秒鐘吧。Systick還是比較簡單的,因為它只有四個寄存器。如下:

寄存器名稱                             寄存器描述
CTRL                                    Systick控制及狀態(tài)寄存器
LOAD                                    Systick重裝載數值寄存器
VAL                                     Systick當前數值寄存器
CALIB                                   Systick校準數值寄存器

我們通過systick產生精確的延時,首先,我們要設置重裝載數值。因為,當定時的時間為0時,RELOAD中的數值自動賦值給systick。那么,設置重裝載數值,也就是定時時間為,這里延時ms為單位,

SysTick->LOAD = 9000 * i;   //72MHz進行8分頻,于是是9MHz,所以9 * 10^6 Hz * 1 * 10^-6 s

接著,我們要使能systick,

SysTick->CTRL = 0x01;      //若為0x00,則關閉定時器

之后,我們要對定時器清零,

SysTick->VAL = 0;

完整代碼如下:

void delay_ms ( unsigned int i ){

    unsigned int temp;
    
    SysTick->LOAD = 9000 * i;   //如果是微妙,則 SysTick->LOAd = 9 * i;
    SysTick->CTRL = 0x01;
    SysTick->VAL = 0;
    
    do{
    
        temp = SysTick->CTRL;    //讀取當前倒計數值
    
    }while ( ( temp & 0x01 ) && ( !( temp & ( 1 << 16 ) ) ) );
    
    SysTick->CTRL = 0x00;     //關閉計數器
    SysTick->VAL = 0;         //計數器清零

}

另外有需要云服務器可以了解下創(chuàng)新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網站標題:Systick時鐘-創(chuàng)新互聯
網頁鏈接:http://muchs.cn/article2/dsioic.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站營銷、營銷型網站建設、App開發(fā)ChatGPT、企業(yè)建站、靜態(tài)網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

外貿網站建設