|
全局变量TimingDelay必须定义为volatile?
[复制链接]
为什么呢?
初始化相关模块:
SysTick_SetReload(9000); // 设定SysTick达到1ms计数结束
SysTick_ITConfig(ENABLE); // 使能SysTick中断
中断处理:
void SysTickHandler (void) {
if (TimingDelay != 0x00)
TimingDelay--;
}
延时代码:
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计数器
}
应用代码:
Delay(300); // 延时 300ms
|
|