<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 淺談STM32F10X芯片SysTick系統時(shí)鐘定時(shí)器

淺談STM32F10X芯片SysTick系統時(shí)鐘定時(shí)器

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
如題,正文如下:

1、介紹

實(shí)現Cortex-M3系統定時(shí)器SysTick的配置,需要具備以下知識:Cortex-M3系統定時(shí)器默認頻率是HCLK的8分頻(如下圖所示),因此需要會(huì )RCC時(shí)鐘的配置;然后配置SysTick系統定時(shí)器;編寫(xiě)SysTick中斷處理函數。

本文引用地址:http://dyxdggzs.com/article/201611/316904.htm

系統時(shí)鐘及系統定時(shí)器時(shí)鐘(詳見(jiàn)手冊)

2、寄存器描述

lSysTick控制及狀態(tài)寄存器STK_CTRL

lSysTick重裝載數值寄存器STK_LOAD

lSysTick當前數值寄存器STK_VAL

lSysTick校準數值寄存器STK_CALIB

與SysTick相關(guān)的固件庫函數有以下幾個(gè):

l配置SysTick系統時(shí)鐘:SysTick_CLKSourceConfig();

l設置SysTick重裝值:SysTick_SetReload();

l使能或除能SysTick定時(shí)器:SysTick_CounterCmd();

l使能或除能SysTick定時(shí)器中斷:SysTick_ITConfig();

l獲取SysTick時(shí)鐘當前值:SysTick_GetCounter();

l檢測SysTick標志位是否設置:SysTICK_GetFlagStatus();

3、SysTick配置流程

?首先配置RCC:選擇系統時(shí)鐘、配置總線(xiàn)時(shí)鐘、使能外圍設備時(shí)鐘等;

?配置NVIC:選擇中斷優(yōu)先級組,設置SysTick中斷優(yōu)先級,使能SysTick中斷通道;

?編寫(xiě)SysTick中斷處理函數;

?配置SysTick時(shí)鐘:

n設置SysTick時(shí)鐘源(不需要,默認選擇HCLK的8分頻作為SysTick系統定時(shí)器的時(shí)鐘源):調用SysTick_CLKSourceConfig()函數;

n設置SysTick時(shí)鐘重裝值:調用SysTick_SetReload();

n使能SysTick時(shí)鐘中斷(根據具體應用需要):調用SysTick_ITConfig()函數;

?使能SysTick時(shí)鐘:調用SysTick_CounterCmd()函數;

然后還可以調用SysTick_GetCounter()函數獲取SysTick系統時(shí)鐘計數器的當前值;也可以調用SysTick_GetFlagStatus()函數檢查指定的SysTick標志位是否設置(沒(méi)有開(kāi)啟中斷,通過(guò)軟件查詢(xún)方式檢查系統定時(shí)器是否計數到0)。

SysTick系統定時(shí)器的中斷標志位在系統時(shí)鐘節拍控制與狀態(tài)寄存器CTRL的COUNTFLAG位,該位由定時(shí)器計數到0置1,讀取時(shí)清零。因此可以調用函數SysTick_GetFlagStatus(SysTick_FLAG_COUNT)來(lái)清除COUNTFLAG標志位。

經(jīng)過(guò)測試:不調用SysTick_GetFlagStatus(SysTick_FLAG_COUNT)函數來(lái)清除標志位,在每次系統時(shí)鐘節拍SysTick在計數為0時(shí),也都能進(jìn)入中斷處理函數。但程序的嚴密性考慮,最好還是調用該函數。

4、SysTick系統定時(shí)器例子

例子1:

/*主函數中配置,這里沒(méi)有選擇SysTick的時(shí)鐘源,是因為c8芯片已經(jīng)將該時(shí)鐘固化成HCLK的8分頻了*/

SysTick_SetReload(9000);

SysTick_ITConfig(ENABLE);

SysTick_CounterCmd(SysTick_Counter_Enable);

/*中斷處理函數*/

void SysTick_Handler(void)/* 1ms中斷一次*/

{

if(SET == SysTick_GetFlagStatus(SysTick_FLAG_COUNT))/*讀標志位,同時(shí)清除標志位*/

{

SysCount++;

if(500 == SysCount)

{

SysCount = 0;

count++;

}

}

}

例子2:

/*主函數配置*/

SysTick_SetReload(9000);

SysTick_ITConfig(ENABLE);

/*延時(shí)函數,延時(shí)nms */

void Delay(u32 nTime)

{

//開(kāi)啟SysTick計數器

SysTick_CounterCmd(SysTick_Counter_Enable);

TimingDelay = nTime;

while(TimingDelay != 0);//死等待

//關(guān)閉系統滴答

SysTick_CounterCmd(SysTick_Counter_Disable);

//清除SysTick計數器

SysTick_CounterCmd(SysTick_Counter_Clear);

}

/*中斷處理函數*/

void SysTick_Handler(void)

{/*沒(méi)有清除標志位,在計數為0時(shí),同樣可以進(jìn)入中斷處理函數實(shí)現TimingDelay自減工作*/

if (TimingDelay != 0x00)

{

TimingDelay--;

}

}



評論


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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>