systick系統(tǒng)定時(shí)器(systick系統(tǒng)定時(shí)器使用注意事項(xiàng))
Systick系統(tǒng)定時(shí)器是Cortex-M3內(nèi)核中的一個(gè)外設(shè),也被嵌入在NVIC(嵌套向量中斷控制器)中,它是一個(gè)24位的向下遞減的計(jì)數(shù)器,每計(jì)數(shù)一次所需的時(shí)間為1/SYSTICK,即系統(tǒng)滴答定時(shí)器時(shí)鐘,它可以直接取自系統(tǒng)時(shí)鐘,還可以通過(guò)系統(tǒng)時(shí)鐘8分頻后獲取,當(dāng)定時(shí)器計(jì)數(shù)到0時(shí),將從LOAD寄存器中自動(dòng)重裝定時(shí)器初值,重新向下遞減計(jì)數(shù),如此循環(huán)往復(fù),如果開(kāi)啟SysTick中斷的話,當(dāng)定時(shí)器計(jì)數(shù)到0,將產(chǎn)生一個(gè)中斷信號(hào),Systick系統(tǒng)定時(shí)器的本質(zhì)是一個(gè)內(nèi)嵌在NVIC中的定時(shí)器,它是一個(gè)24位的向下遞減的計(jì)數(shù)器,每計(jì)數(shù)一次所需時(shí)間為1/SYST

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



發(fā)表評(píng)論