当前位置 - 股票行情交易網 - 金融財經 - STM32中,systick具體延時時間怎麽計算的?

STM32中,systick具體延時時間怎麽計算的?

SysTick 就是壹個定時器而已,只是它放在了NVIC(嵌套中斷控制器)中,主要的目的是為了給操作系統提供壹個硬件上的中斷(號稱滴答中斷)。

滴答中斷:操作系統進行運轉的時候,也會有“心跳”。

它會根據“心跳”的節拍來工作,把整個時間段分成很多小小的時間片,每個任務每次只能運行壹個“時間片”的時間長度就得退出給別的任務運行,這樣可以確保任何壹個任務都不會霸占整個系統不放。

這個心跳,可以通過定時器來周期性觸發,而這個定時器就是systick。很明顯,這個“心跳”是不允許任何人來隨意地訪問和修改的。只要不把它在SysTick 控制及狀態寄存器中的使能位清除,就永不停息。

{ ?

SysTick_Current=0; //當前值為0

SysTick_Reload=72000; //重裝載寄存器,系統時鐘72M,中斷壹次1mS(1ms=0.001s=1/72M*72000)

TimingDelay =nTime; // 讀取延時時間?

SysTick_CSR=0x07; // 使能SysTick計數器

while(TimingDelay!= 0); // 判斷延時是否結束?

SysTick_CSR=0x06;// 關閉SysTick計數器?

}?

void Delay_Nus(uint32_t nTime) ?//us級的延時函數

{?SysTick_Current=0;?

SysTick_Reload=72; //重裝載寄存器,系統時鐘20M中斷壹次1mS?

TimingDelay=nTime;

SysTick_CSR=0x07; ? // 使能SysTick計數器?

while(TimingDelay!= 0); // 判斷延時是否結束?

SysTick_CSR=0x06;// 關閉SysTick計數器?}