STM32 SYSTICK寄存器詳解、描述
********************************************************************************************************/
#include "stm32f10x_lib.h"
/*************************************函數(shù)聲明**********************************/
void SysTick_Config(void);//SysTick定時(shí)器配置
void Delay_Ms(u32);//定時(shí)時(shí)間配置
void TimingDelay_Decrement(void);//中斷定時(shí)時(shí)間處理函數(shù)
static vu32 TimingDelay;//中斷處理函數(shù)
/*******************************************************************************
* 函數(shù)名稱 : void SysTick_Config(void)
* 函數(shù)描述:SysTick定時(shí)器配置
* 輸入?yún)?shù):無(wú)
* 輸出參數(shù):無(wú)
* 返回值:無(wú)
*******************************************************************************/
//SysTick設(shè)置
void SysTick_Config(void)
{
/* Disable SysTick Counter */
SysTick_CounterCmd(SysTick_Counter_Disable);
/*函數(shù)原形 void SysTick_CounterCmd(u32 SysTick_Counter)
功能描述 使能或者失能SysTick計(jì)數(shù)器
輸入?yún)?shù) SysTick_Counter:SysTick計(jì)數(shù)器新?tīng)顟B(tài)
SysTick_Counter_Disable 失能計(jì)數(shù)器
SysTick_Counter_Enable 使能計(jì)數(shù)器
SysTick_Counter_Clear 清除計(jì)數(shù)器值為0 */
/* Disable the SysTick Interrupt */
SysTick_ITConfig(DISABLE);
/*函數(shù)原形 void SysTick_ITConfig(FunctionalState NewState)
功能描述 使能或者失能SysTick中斷
輸入?yún)?shù) NewState:SysTick中斷的新?tīng)顟B(tài)
這個(gè)參數(shù)可以取:ENABLE或者DISABLE*/
/* Configure HCLK clock as SysTick clock source */
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
/*函數(shù)原形 void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
功能描述 設(shè)置SysTick時(shí)鐘源
輸入?yún)?shù) SysTick_CLKSource:SysTick時(shí)鐘源
SysTick_CLKSource_HCLK_Div8 SysTick時(shí)鐘源為AHB時(shí)鐘除以8
SysTick_CLKSource_HCLK SysTick時(shí)鐘源為AHB時(shí)鐘*/
/* SysTick interrupt each 1000 Hz with HCLK equal to 72MHz */
SysTick_SetReload(9000);
//系統(tǒng)嘀嗒校準(zhǔn)值固定到9000,當(dāng)系統(tǒng)嘀嗒時(shí)鐘設(shè)定為9 兆赫,產(chǎn)生1ms 時(shí)基。
/*函數(shù)原形 void SysTick_SetReload(u32 Reload)
功能描述 設(shè)置SysTick重裝載值
輸入?yún)?shù) Reload:重裝載值
該參數(shù)取值必須在1和0x00FFFFFF之間*/
/* Enable the SysTick Interrupt */
SysTick_ITConfig(ENABLE);
/*函數(shù)原形 void SysTick_ITConfig(FunctionalState NewState)
功能描述 使能或者失能SysTick中斷
輸入?yún)?shù) NewState:SysTick中斷的新?tīng)顟B(tài)
這個(gè)參數(shù)可以?。篍NABLE或者DISABLE*/
}
/*******************************************************************************
* 函數(shù)名稱 :void Delay_Ms(u32 nTime)
* 函數(shù)描述:定時(shí)時(shí)間配置
* 輸入?yún)?shù):u32 nTime
* 輸出參數(shù):無(wú)
* 返回值:無(wú)
*******************************************************************************/
void Delay_Ms(u32 nTime)
{
/* Enable the SysTick Counter */
SysTick_CounterCmd(SysTick_Counter_Enable);
/*函數(shù)原形 void SysTick_CounterCmd(u32 SysTick_Counter)
功能描述 使能或者失能SysTick計(jì)數(shù)器
輸入?yún)?shù) SysTick_Counter:SysTick計(jì)數(shù)器新?tīng)顟B(tài)
參閱Section:SysTick_Counter查閱更多該參數(shù)允許取值范圍
SysTick_Counter_Disable 失能計(jì)數(shù)器
SysTick_Counter_Enable 使能計(jì)數(shù)器
SysTick_Counter_Clear 清除計(jì)數(shù)器值為0*/
TimingDelay = nTime;
while(TimingDelay != 0)
{
}
/*函數(shù)原形 void SysTick_CounterCmd(u32 SysTick_Counter)
功能描述 使能或者失能SysTick計(jì)數(shù)器
輸入?yún)?shù) SysTick_Counter:SysTick計(jì)數(shù)器新?tīng)顟B(tài)
參閱Section:SysTick_Counter查閱更多該參數(shù)允許取值范圍
SysTick_Counter_Disable 失能計(jì)數(shù)器
SysTick_Counter_Enable 使能計(jì)數(shù)器
SysTick_Counter_Clear 清除計(jì)數(shù)器值為0*/
/* Disable SysTick Counter */
SysTick_CounterCmd(SysTick_Counter_Disable);
/* Clear SysTick Counter */
SysTick_CounterCmd(SysTick_Counter_Clear);
/*函數(shù)原形 void SysTick_CounterCmd(u32 SysTick_Counter)
功能描述 使能或者失能SysTick計(jì)數(shù)器
輸入?yún)?shù) SysTick_Counter:SysTick計(jì)數(shù)器新?tīng)顟B(tài)
參閱Section:SysTick_Counter查閱更多該參數(shù)允許取值范圍
SysTick_Counter_Disable 失能計(jì)數(shù)器
SysTick_Counter_Enable 使能計(jì)數(shù)器
SysTick_Counter_Clear 清除計(jì)數(shù)器值為0*/
}
/*******************************************************************************
* 函數(shù)名稱 :void TimingDelay_Decrement(void)
* 函數(shù)描述:中斷定時(shí)時(shí)間處理函數(shù)
* 輸入?yún)?shù):u32 nTime
* 輸出參數(shù):無(wú)
* 返回值:無(wú)
*******************************************************************************/
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}