systick系統(tǒng)定時(shí)器的簡單介紹
溫馨提示:這篇文章已超過696天沒有更新,請(qǐng)注意相關(guān)的內(nèi)容是否還可用!
SysTick 就是一個(gè)定時(shí)器而已,只是它放在了NVIC中,主要的目的是為了給操作系統(tǒng)提供一個(gè)硬件上的中斷。這個(gè)心跳,可以通過定時(shí)器來周期性觸發(fā),而這個(gè)定時(shí)器就是systick。只要不把它在SysTick 控制及狀態(tài)寄存器中的使能位清除,就永不停息。= 0); // 判斷延時(shí)是否結(jié)束SysTick_CSR=0x06;// 關(guān)閉SysTick計(jì)數(shù)器}void Delay_Nus //us級(jí)的延時(shí)函數(shù){SysTick_Current=0;SysTick_Reload=72; //重裝載寄存器,系統(tǒng)時(shí)鐘20M中斷一次1mSTimingDelay=nTime;SysTick_CSR=0x07; // 使能SysTick計(jì)數(shù)器while(TimingDelay!= 0); // 判斷延時(shí)是否結(jié)束SysTick_CSR=0x06;// 關(guān)閉SysTick計(jì)數(shù)器}. 你說你在你的延時(shí)函數(shù)中使用了systemtick,在你EXTI0_1_IRQHandler執(zhí)行的時(shí)候,systemtick的中斷處理不能執(zhí)行。關(guān)于systick系統(tǒng)定時(shí)器和的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?
本站是一個(gè)關(guān)于水族行業(yè)的一個(gè)網(wǎng)站,本文給大家介紹systick系統(tǒng)定時(shí)器,和對(duì)應(yīng)的相關(guān)信息,希望對(duì)魚友有所幫助,謝謝關(guān)注我們祥龍魚場(chǎng)。
本文目錄一覽:
- 1、STM32中,systick具體延時(shí)時(shí)間怎么計(jì)算的?
- 2、stm32怎么開啟systick定時(shí)器
- 3、stm32關(guān)于系統(tǒng)滴答定時(shí)器(systick)
STM32中,systick具體延時(shí)時(shí)間怎么計(jì)算的?
SysTick 就是一個(gè)定時(shí)器而已,只是它放在了NVIC(嵌套中斷控制器)中,主要的目的是為了給操作系統(tǒng)提供一個(gè)硬件上的中斷(號(hào)稱滴答中斷)。
滴答中斷:操作系統(tǒng)進(jìn)行運(yùn)轉(zhuǎn)的時(shí)候,也會(huì)有“心跳”。
它會(huì)根據(jù)“心跳”的節(jié)拍來工作,把整個(gè)時(shí)間段分成很多小小的時(shí)間片,每個(gè)任務(wù)每次只能運(yùn)行一個(gè)“時(shí)間片”的時(shí)間長度就得退出給別的任務(wù)運(yùn)行,這樣可以確保任何一個(gè)任務(wù)都不會(huì)霸占整個(gè)系統(tǒng)不放。
這個(gè)心跳,可以通過定時(shí)器來周期性觸發(fā),而這個(gè)定時(shí)器就是systick。很明顯,這個(gè)“心跳”是不允許任何人來隨意地訪問和修改的。只要不把它在SysTick 控制及狀態(tài)寄存器中的使能位清除,就永不停息。
{
SysTick_Current=0; //當(dāng)前值為0
SysTick_Reload=72000; //重裝載寄存器,系統(tǒng)時(shí)鐘72M,中斷一次1mS(1ms=0.001s=1/72M*72000)
TimingDelay =nTime; // 讀取延時(shí)時(shí)間
SysTick_CSR=0x07; // 使能SysTick計(jì)數(shù)器
while(TimingDelay!= 0); // 判斷延時(shí)是否結(jié)束
SysTick_CSR=0x06;// 關(guān)閉SysTick計(jì)數(shù)器
}
void Delay_Nus(uint32_t nTime) ? ? ?//us級(jí)的延時(shí)函數(shù)
{?SysTick_Current=0;
SysTick_Reload=72; //重裝載寄存器,系統(tǒng)時(shí)鐘20M中斷一次1mS
TimingDelay=nTime;
SysTick_CSR=0x07; ? // 使能SysTick計(jì)數(shù)器
while(TimingDelay!= 0); // 判斷延時(shí)是否結(jié)束
SysTick_CSR=0x06;// 關(guān)閉SysTick計(jì)數(shù)器?}
stm32怎么開啟systick定時(shí)器
這是設(shè)置SysTick 定時(shí)器的一個(gè)初始化函數(shù),具體解析如下:
void SysTInit(void)
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//SysTick時(shí)鐘源為AHB時(shí)鐘除以8
SysTick_SetReload(9000);//SysTick重裝載值為9000
SysTick_ITConfig(ENABLE);//使能SysTick中斷
NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 0, 0);//設(shè)置優(yōu)先級(jí)為0組0級(jí)
SysTStop();
stm32關(guān)于系統(tǒng)滴答定時(shí)器(systick)
你在中斷處理函數(shù)中調(diào)用延時(shí)函數(shù)。是可以的。關(guān)鍵這個(gè)延時(shí)函數(shù)不可以使用到別的中斷。stm32在中斷處理中只能同時(shí)處理一個(gè)中斷。如果該中斷不處理完。即使有別的高級(jí)別中斷產(chǎn)生也不會(huì)執(zhí)行處理函數(shù)。你說你在你的延時(shí)函數(shù)中使用了systemtick,在你EXTI0_1_IRQHandler執(zhí)行的時(shí)候,systemtick的中斷處理不能執(zhí)行。你的系統(tǒng)計(jì)時(shí)也不會(huì)增加,就導(dǎo)致你的延時(shí)函數(shù)永遠(yuǎn)等不到結(jié)束。如果你一定要延時(shí)的話,可以使用空循環(huán)。
關(guān)于systick系統(tǒng)定時(shí)器和的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
發(fā)表評(píng)論
還沒有評(píng)論,來說兩句吧...