STM32學習筆記 SysTick定時器

2021-05-02 09:14:17 字數 2900 閱讀 9072

q:什麼是systick定時器?

systick 是乙個24 位的倒計數定時器,當計到0 時,將從reload 暫存器中自動重裝載定時初值。只要不把它在systick 控制及狀態暫存器中的使能位清除,就永不停息。

q:為什麼要設定systick定時器?

1)產生作業系統的時鐘節拍

systick

定時器被**在

nvic

中,用於產生systick異常(異常號:15)。在以前,大多作業系統需要乙個硬體定時器來產生作業系統需要的滴答中斷,作為整個系統的時基。因此,需要乙個定時器來產生週期性的中斷,而且最好還讓使用者程式不能隨意訪問它的暫存器,以維持作業系統「心跳」的節律。

2)便於不同處理器之間程式移植。

cortex‐m3

處理器內部包含了乙個簡單的定時器。因為所有的cm3晶元都帶有這個定時器,軟體在不同 cm3器件間的移植工作得以化簡。該定時器的時鐘源可以是內部時鐘(fclk,cm3上的自由執行時鐘),或者是外部時鐘( cm3處理器上的stclk訊號)。

不過,stclk的具體**則由晶元設計者決定,因此不同產品之間的時鐘頻率可能會大不相同,你需要檢視晶元的器件手冊來決定選擇什麼作為時鐘源。systick

定時器能產生中斷,cm3為它專門開出乙個異常型別,並且在向量表中有它的一席之地。它使作業系統和其它系統軟體在cm3器件間的移植變得簡單多了,因為在所有

cm3產品間對其處理都是相同的。

3)作為乙個鬧鈴測量時間。

systick

定時器除了能服務於作業系統之外,還能用於其它目的:如作為乙個鬧鈴,用於測量時間等。要注意的是,當處理器在除錯期間被喊停(halt)時,則systick定時器亦將暫停運作。

qsystick如何執行?

首先設定計數器時鐘源,ctrl->clksource(控制暫存器)。設定過載值(reload暫存器),清空計數暫存器val(就是下圖的current)。置ctrl->enable位 開始計時。

如果是中斷則允許systick中斷,在中斷例程中處理。如採用查詢模式則不斷讀取控制暫存器的countflag標誌位,判斷是否計時至零。或者採取下列一種方法

當systick 定時器從1 計到0 時,它將把countflag 位置位;而下述方法可以清零之:

1. 讀取systick 控制及狀態暫存器(stcsr)

2. 往systick 當前值暫存器(stcvr)中寫任何資料

只有當val值為0時,計數器自動過載reload。

q:如何使用systicks作為系統時鐘?

systick 的最大使命,就是定期地產生異常請求,作為系統的時基。os 都需要這種「滴答」來推動任務和時間的管理。如欲使能systick 異常,則把stcsr.tickint 置位。另外,如果向量表被重定位到sram 中,還需要為systick 異常建立向量,提供其服務例程的入口位址。

q:如何使用systick完成一段延時?

查詢方式 參考:http://blog.ednchina.com/atom6037/188271/message.aspx

中斷方式 參考:

初始化函式systick_configuration(void)放在while()迴圈外,執行一次:

view plain

copy to clipboard

print

?

voidsystick_configuration(void)   

void systick_configuration(void)

延時函式,需要延時處呼叫:

view plain

copy to clipboard

print

?

voiddelay(u32 ntime)   

void delay(u32 ntime)

中斷函式,定時器減至零時呼叫,放在stm32f10x_it.c檔案中

view plain

copy to clipboard

print

?

voidsystickhandler(void)   

void systickhandler(void)

STM32學習筆記

剛到公司實習,要學習stm32開發,boss給了一塊戰艦開發板,讓我自己寫乙個功能要用在公司的產品上。難啊。以前根本沒接觸過stm32,只能一步一步慢慢來,利用晚上利用週末惡補一下。哎,算是為了大學前兩年還債吧。一 跑馬燈實驗 gpio輸出 實驗環境 keil4 實驗平台 戰艦stm32開發板 gp...

stm32學習筆記

開漏模式輸出 輸出暫存器上的 0 啟用 n mos,而輸出暫存器上的 1 將埠 置於高阻狀態 p mos從 被啟用 推挽模式輸出 輸出暫存器上的 0 啟用 n mos,而輸出暫存器上的 1 將啟用 p mos。上拉輸入 輸入高電平,然後接乙個 上拉電阻 保護作用 讀取此時的引腳電平為高電平 下拉輸入...

學習筆記 stm32

簡介cortex核心 cortex m4核心 庫開發與暫存器開發的關係 stm32 韌體庫與 cmsis 標準 內部結構 最小系統 小馬哥四軸原始碼學習 新建工程 點燈!gpio 按鍵暫存器對映 時鐘系統 systick定時器 埠復用和重對映 串列埠串列埠試驗函式分析 中斷看門狗 通用定時器 階段性...