開(kāi)學(xué)了,無(wú)法再像假期一樣能夠一整天玩板了!好在這學(xué)期的課說(shuō)少不少,說(shuō)多也不多,每周也有十幾大節(jié)。剩下的時(shí)間除去學(xué)生工作等一些七七八八的事情,間斷著還是能看看教程玩玩板!越發(fā)發(fā)現(xiàn)《STM32菜鳥(niǎo)學(xué)習(xí)手冊(cè)——啰嗦版》真是不錯(cuò)的入門(mén)教程,簡(jiǎn)單易懂。其他諸如《固件庫(kù)手冊(cè)》等等官方文件更是必不可少,可惜ST公司的網(wǎng)頁(yè)找手冊(cè)實(shí)在麻煩得很吶!這兩天一直在看有關(guān)于系統(tǒng)嘀嗒時(shí)鐘SysTick的文件,但由于3.5版的固件庫(kù)較2.0版的庫(kù),已經(jīng)將SysTick相關(guān)的驅(qū)動(dòng)函數(shù)移除,用戶要使用SysTick就必須改為調(diào)用CMSIS中的函數(shù),而網(wǎng)上大多數(shù)的例程(包括《菜鳥(niǎo)學(xué)習(xí)手冊(cè)》)使用的都是2.0的庫(kù),以至于在學(xué)習(xí)中遇到許多問(wèn)題,程序編譯總會(huì)出現(xiàn)問(wèn)題。一般都是“無(wú)法找到與SysTick相關(guān)的函數(shù),函數(shù)未定義”錯(cuò)誤。因此,查找了許多文獻(xiàn)才得以解決。
本文引用地址:http://m.butianyuan.cn/article/201611/322898.htmSysTick定時(shí)器被捆綁在NVIC中,用于產(chǎn)生SysTick異常(異常號(hào):15)。主要應(yīng)用于操作系統(tǒng),作為“嘀嗒中斷”維持操作系統(tǒng)“心跳”的節(jié)律。當(dāng)然,SysTick定時(shí)器除了能服務(wù)于操作系統(tǒng)之外,還能用于其它目的:如作為一個(gè)鬧鈴,用于測(cè)量時(shí)間等。要注意的是,當(dāng)處理器在調(diào)試期間被喊停(halt)時(shí),則SysTick定時(shí)器亦將暫停運(yùn)作。
1.SysTick寄存器:
寄存器 | 說(shuō)明 | 地址 |
CTRL | SysTick控制和狀態(tài)寄存器 | 0xE000E010 |
LOAD | Systick重裝值寄存器 | 0xE000E014 |
VAL | Systick當(dāng)前值寄存器 | 0xE000E018 |
CALIB | SysTick校準(zhǔn)值寄存器 | 0xE000E01C |
lSysTick控制和狀態(tài)寄存器(SysTick_CTRL)
說(shuō)明:
CLKSOURCE位:CM3允許為SysTick提供兩個(gè)時(shí)鐘源以供選擇。第一個(gè)是內(nèi)核的“自由運(yùn)行時(shí)鐘”FCLK。“自由”表現(xiàn)在它不來(lái)自系統(tǒng)時(shí)鐘HCLK,因此在系統(tǒng)時(shí)鐘停止時(shí)FCLK也繼續(xù)運(yùn)行。第二個(gè)是一個(gè)外部的參考時(shí)鐘。但是使用外部時(shí)鐘時(shí),因?yàn)樗趦?nèi)部是通過(guò)FCLK來(lái)采樣的,因此其周期必須至少是FCLK的兩倍(采樣定理)。很多情況下芯片廠商都會(huì)忽略此外部參考時(shí)鐘,因此通常不可用。
COUNTFLAG位:當(dāng)SysTick定時(shí)器從1計(jì)到0時(shí),它將把COUNTFLAG位置位;而下述方法可以清零之:
讀取SysTick控制及狀態(tài)寄存器(STCSR);
往SysTick當(dāng)前值寄存器(STCVR)中寫(xiě)任何數(shù)據(jù)。
lSysTick重裝值寄存器(SysTick_LOAD)
說(shuō)明:
當(dāng)計(jì)數(shù)器倒數(shù)至0時(shí),使用SysTick_LOAD寄存器來(lái)指定載入“當(dāng)前值寄存器”的初始值。初始值可以是1到0x00FFFFFF之間的任何值。
評(píng)論