新聞中心

STM32 SYSTICK

作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
voidSysTick_Config(void);//SysTick定時(shí)器配置

voidDelay_Ms(u32);//定時(shí)時(shí)間配置
voidvoidSysTickHandler(void);//中斷定時(shí)時(shí)間處理函數(shù)
staticvu32TimingDelay;//中斷處理函數(shù)

本文引用地址:http://m.butianyuan.cn/article/201611/321060.htm


//SysTick設(shè)置
voidSysTick_Config(void)
{

SysTick_CounterCmd(SysTick_Counter_Disable);


SysTick_ITConfig(DISABLE);


SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);


SysTick_SetReload(9000);
//系統(tǒng)嘀嗒校準(zhǔn)值固定到9000,當(dāng)系統(tǒng)嘀嗒時(shí)鐘設(shè)定為9兆赫,產(chǎn)生1ms時(shí)基。



SysTick_ITConfig(ENABLE);


}


voidDelay_Ms(u32nTime)
{

SysTick_CounterCmd(SysTick_Counter_Enable);

TimingDelay=nTime;

while(TimingDelay!=0)
{
}


SysTick_CounterCmd(SysTick_Counter_Disable);

SysTick_CounterCmd(SysTick_Counter_Clear);

}


voidSysTickHandler(void)
{
if(TimingDelay!=0x00)
{
TimingDelay--;
}
}
這里所有使用的都是在有stm32f10x_systick.c這個(gè)文件的時(shí)候,這個(gè)是2.0中才有的文件,3.0中使用并不是這樣使用的@!

在這里說(shuō)明一下的是,必須要注意,systick和普通的中斷一樣,當(dāng)計(jì)數(shù)器溢出時(shí)就會(huì)產(chǎn)生中斷,必須要再中斷處理函數(shù)中處理,但是沒(méi)有經(jīng)過(guò)NVIC的控制,這個(gè)是需要注意的,沒(méi)有使用NVIC配置systick。

其中systick異常,異常號(hào)15,這個(gè)定時(shí)的異常的主要功能用于操作系統(tǒng)提供時(shí)鐘信號(hào)。

但是當(dāng)產(chǎn)生恒定的systick中斷頻率:最簡(jiǎn)單的作法就是:直接把TENMS的值寫(xiě)入重裝載寄存器,這樣一來(lái),只要沒(méi)突破系統(tǒng)極限,就能做到每10ms來(lái)一次systick異常,如果需要其他的systick異常周期,則可以根據(jù)TENMS的值加以比例計(jì)算,只不過(guò),在少數(shù)情況下,CM3芯片可能無(wú)法準(zhǔn)確地提供TENMS的值(如,CM3的叫轉(zhuǎn)輸入信號(hào)被拉低)。

Systick定時(shí)器除了能服務(wù)于操作系統(tǒng)之外,還能用于其他目的:如作為一個(gè)鬧鐘,用于測(cè)量時(shí)間等。要注意的是,當(dāng)處理器在調(diào)試器件被喊停hatl時(shí),則systick定時(shí)器亦將暫停運(yùn)作。



關(guān)鍵詞: STM32SYSTIC

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉