源代码
初始化相关模块 :
- 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计数器
- }
应用代码
|