源代码
初始化相关模块 :
SysTick_SetReload(9000); // 设定SysTick达到1ms计数结束
SysTick_ITConfig(ENABLE); // 使能SysTick中断
说明:外部晶振为8MHz,系统时钟为72MHz, SysTick的频率9MHz,SysTick产生1ms的中断
中断处理 :
void SysTickHandler (void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
注意:全局变量TimingDelay必须定义为volatile。
延时代码:
void Delay(u32 nTime)
{
SysTick_CounterCmd(SysTick_Counter_Enable); // 使能SysTick计数器
TimingDelay = nTime; // 读取延时时间
while(TimingDelay != 0); // 判断延时是否结束
SysTick_CounterCmd(SysTick_Counter_Disable); // 关闭SysTick计数器
SysTick_CounterCmd(SysTick_Counter_Clear); // 清除SysTick计数器
}
应用代码
|