systick系統(tǒng)嘀嗒實驗stm32神舟號開發(fā)板_第1頁
systick系統(tǒng)嘀嗒實驗stm32神舟號開發(fā)板_第2頁
systick系統(tǒng)嘀嗒實驗stm32神舟號開發(fā)板_第3頁
免費預(yù)覽已結(jié)束,剩余5頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第14章Systick系統(tǒng)嘀嗒實 Systick系統(tǒng)嘀嗒實 什么是Systick定時 Systick定時器和其他定時器的區(qū) Systick定時器有哪些作 Systick定時器的時......................................................................................................... Systick定時器定時時間的計 14Systick系統(tǒng)嘀嗒Systick系統(tǒng)嘀嗒實驗我們學(xué)習(xí)NVIC向量中斷控制器的時候,ST提供的參考手冊中幾乎沒有涉及NVIC的內(nèi)容。我們要了解它里面的寄存器的話還要參考《STM32F10xxx的Cortex-M3編程手冊.pdf》。Systick定時器的情況和NVIC類似。STM32采用的Cortex-M3的核,NVICSystickCortex-M3的手冊中都有詳細的介紹。要注STM32NVIC、SystickCortex-M3NVIC、Systick是有一些差異的。什么是Systick定時器SysTick,系統(tǒng)滴答聲。系統(tǒng)滴答滴答很形象地表示了它是一個系統(tǒng)節(jié)拍器。SysTick是一個24位的倒計數(shù)定時器,注意是倒計數(shù)!當計到0時,它就會自動從RELOAD寄存器中自動重裝載定時初值。只要不把CTRL寄存器中的ENABLE位清0,它就永Systick定時器和其他定時器的區(qū)別①SystickARM②Systick好像是不可中斷,啟動之后做OS的時基非常好,不像一般定時器,占用了一級Systick定時器有哪些作用產(chǎn)生操作系統(tǒng)的時鐘SysTick定時器被在NVIC中,用于產(chǎn)生SYSTICK異常(異常號:15。在以前,大多操作系統(tǒng)需要一個硬件定時器來產(chǎn)生操作系統(tǒng)需要的滴答中斷,作為整個系統(tǒng)的時基。因此,需要一個定時器來產(chǎn)生周期性的中斷,而且最好還讓用戶程序不能隨意它的寄存器,以維持操作系統(tǒng)“心跳”的節(jié)律。SysTick的最大使命,就是定期地產(chǎn)生異常請求,作為系統(tǒng)的時基。OS都需要這種“滴答”來推動任務(wù)便于不同處理器之間程序移植Cortex‐M3處理器內(nèi)部包含了一個簡單的定時器。因為所有的CM3都帶有這個定時器,軟件在不同CM3器件間的移植工作得以化簡。該定時器的時可以是內(nèi)部時鐘(FCLK,CM3上的自由運行時鐘,或者是外部時鐘(CM3處理器上的STCLK信號。不過,STCLK的具體來源則由設(shè)計者決定,因此不同產(chǎn)品之間的時鐘頻率可能會大不相同,你需要檢視的器件手冊來決定選擇什么作為時。SysTick定時器能產(chǎn)生中斷,CM3為它專門開出一個異常類型,并且在向量表中有它的一席之地。它使操作系統(tǒng)和其它系統(tǒng)軟件在CM3器件間的移植變得簡單多了,因為在所有CM3產(chǎn)品間對其處理作為一個SysTick定時器還可以用作鬧鐘,作為啟動一個特定任務(wù)的時間依據(jù)。它作為一個鬧鈴,用于測量時間。要注意的是,當處理器在調(diào)試期間被喊停(halt)時,則SysTick定時器亦將暫停運作。Systick定時器的時可以是內(nèi)部時鐘(FCLK,CM3上的自由運行時鐘),或者是外部時鐘(CM3處理器上的STCLK信號。不過,STCLK的具體來源則由設(shè)計者決定,因此不同產(chǎn)品之間的時鐘頻率STM32中,我們可以通過代碼配置Systick定時器的時鐘等于AHB時鐘或者是AHB時鐘/8Systick的寄存器SysTick相關(guān)的4個寄存器名稱和地址如下0xE000E010-控制寄存0xE000E014-重載寄存0xE000E018-當前值寄存0xE000E01C-校準值寄存面的學(xué)習(xí)中,我們使用的延時函數(shù)delay(voiddelay(IOuint32_tnCount){for(;nCount!=0;nCount--}延時是通過給nCount設(shè)置值,CPU循環(huán)執(zhí)行變量nCount自減實現(xiàn)。對于STM32系列微處理器說,很難計算出延時的精確值。當我們需要精確延時是,可以利用Systick來設(shè)計 SysTick控制與狀態(tài)寄存器可以看到實際使用只用到了其中的4位,如下表所示位CLKSOURCE用于選擇Systick1時,Systick定時器時鐘為AHB0時,Systick定時器時鐘為AHB/8。SysTick_LOAD重裝值寄存器SysTick一個遞減的計數(shù)器計數(shù)器遞減到“0重裝寄存器中的值就會被重裝SysTick_VAL當前值寄存器使用SysTick當前值寄存器來查找寄存器中的當前值。具體寄存器的位分配如下所示使用校準寄存器通過乘法或是除法運算可以將寄存器調(diào)節(jié)成任意所需的時鐘速率,如下所示Systick定時器定時時間的計算我們給Systick定時器,配置的時鐘頻率是72MHz1Hz表示1秒震蕩172MHz表示1秒震蕩72M次,那么每次振蕩時間是1/72MHZ?,F(xiàn)在需要振蕩72M/ 次,總共所花的時間用以下公式來算 需要振蕩的次數(shù)*每次的振蕩時間= *1/72M= =0.000001秒=例程01systick系統(tǒng)嘀嗒實驗調(diào)用函數(shù)LED_Init()初始化板載LED燈,調(diào)用函數(shù)SysTick_Init()配置Systick,進入代碼,并且按下【復(fù)位】鍵,可以看到LED1燈每隔1秒就閃爍1次 #include"ledh"#include"systick.h"intmain(void){{} }voidSysTick_Init(uint32_tHzPreSecond){if(SysTick_Config(SystemCoreClock/{while}}這個函數(shù)配置24位的倒計數(shù)Systick定時器,當計到0時引起中斷,并從STK_LOAD寄存器中自動重裝載定時初值。只要不把它在SysTick控制及狀態(tài)寄存器中的使能位清除,就永不停息。輸入的參數(shù)ticksSTK_LOAD寄存器,為兩個中斷之間的脈沖數(shù)(定時初值,即相隔ticks個時鐘周期會引起一次中斷;配置SysTick成功時返回0,出錯進返回1。第一行代碼“if(ticks>SysTick_LOAD_RELOAD_Msk)return(1)”ticks,因為ticks是定時初值,要被保存到重載寄存器STK_LOAD寄存器中,再由硬件把STK_LOAD值加載到當前計數(shù)值寄存器STK_VAL使用的,STK_LOAD和STK_VAL都是24位的,所以當輸入?yún)?shù)ticks大于其可第二行代碼“SysTick->LOAD=(ticks&SysTick_LOAD_RELOAD_Msk)-1”稍稍處理一下把ticks-1STK_LOAD寄存器,要注意的是1,若STK_VALticks-1向下計數(shù)0,實際上就經(jīng)過了ticks個脈沖。這句賦值代碼中使用到了宏SysTick_LOAD_RELOAD_Msk,與其它庫函數(shù)類似,這樣子的宏是用來指示寄存器的特定位置或進行位用的。類似的宏定義如下:SysTick_LOAD_RELOAD_Msk0xFFFFFFul左移0位。像這樣子的操作,在控制寄存器的代碼(大部分“NVIC_SetPriority(SysTick_IRQn1<<NVIC_PRIO_BITS)1)”配置中斷向SysTick中斷的原因。 會把在STK_LOAD寄存器中的ticks值加載給它。AHB(72MHz同時使能Systick定時器和Systick定時器中斷。例程02systick系統(tǒng)嘀嗒雙任務(wù)在main函數(shù)里實現(xiàn)3個LED燈閃爍,在systick定時器中斷里實現(xiàn)蜂鳴器鳴叫,真

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論