systick系統(tǒng)定時器(systick系統(tǒng)定時器使用注意事項)
Systick系統(tǒng)定時器是Cortex-M3內(nèi)核中的一個外設(shè),也被嵌入在NVIC(嵌套向量中斷控制器)中,它是一個24位的向下遞減的計數(shù)器,每計數(shù)一次所需的時間為1/SYSTICK,即系統(tǒng)滴答定時器時鐘,它可以直接取自系統(tǒng)時鐘,還可以通過系統(tǒng)時鐘8分頻后獲取,當(dāng)定時器計數(shù)到0時,將從LOAD寄存器中自動重裝定時器初值,重新向下遞減計數(shù),如此循環(huán)往復(fù),如果開啟SysTick中斷的話,當(dāng)定時器計數(shù)到0,將產(chǎn)生一個中斷信號,Systick系統(tǒng)定時器的本質(zhì)是一個內(nèi)嵌在NVIC中的定時器,它是一個24位的向下遞減的計數(shù)器,每計數(shù)一次所需時間為1/SYST
Systick系統(tǒng)定時器
Systick系統(tǒng)定時器是Cortex-M3內(nèi)核中的一個外設(shè),也被嵌入在NVIC(嵌套向量中斷控制器)中。它是一個24位的向下遞減的計數(shù)器,每計數(shù)一次所需的時間為1/SYSTICK,即系統(tǒng)滴答定時器時鐘,它可以直接取自系統(tǒng)時鐘,還可以通過系統(tǒng)時鐘8分頻后獲取。當(dāng)定時器計數(shù)到0時,將從LOAD寄存器中自動重裝定時器初值,重新向下遞減計數(shù),如此循環(huán)往復(fù)。如果開啟SysTick中斷的話,當(dāng)定時器計數(shù)到0,將產(chǎn)生一個中斷信號。
工作原理
Systick系統(tǒng)定時器的本質(zhì)是一個內(nèi)嵌在NVIC中的定時器,它是一個24位的向下遞減的計數(shù)器,每計數(shù)一次所需時間為1/SYSTICK。當(dāng)定時器計數(shù)到0時,將從LOAD寄存器中自動重裝定時器初值,重新向下遞減計數(shù)。如果開啟SysTick中斷的話,當(dāng)定時器計數(shù)到0,將產(chǎn)生一個中斷信號。
應(yīng)用場景
Systick系統(tǒng)定時器常用來做延時任務(wù),在實時系統(tǒng)中,則常用來做系統(tǒng)時鐘。此外,它還被應(yīng)用于操作系統(tǒng)的節(jié)拍時鐘,用于產(chǎn)生時基,維持操作系統(tǒng)的心跳。
如何配置Systick
配置Systick系統(tǒng)定時器主要是通過配置其寄存器來實現(xiàn)。具體來說,需要配置的是LOAD寄存器,即設(shè)置定時器的重裝載值。這個值決定了定時器計數(shù)到0后何時再次產(chǎn)生中斷。另外,還需要配置的是CTRL寄存器,即設(shè)置定時器的時鐘源和是否使能定時器。
注意事項
在使用Systick時,需要注意的是,一旦啟用了SysTick,就需要處理好由此產(chǎn)生的中斷,否則可能會對系統(tǒng)的正常運行造成影響。此外,還需要注意的是,全局變量TimingDelay必須使用volatile,否則可能會被編譯器優(yōu)化。
發(fā)表評論