A点用代码测试,确实跑了很多次
B点设断点观察,temp的值从来不曾变化,如果temp的值不变,就不能跳出do while循环,但程序确实跳出循环跑到了C点
为什么能跳出循环呢,百思不得其解
[mw_shl_code=c,true]void delay_ms(u16 nms)
{
u32 temp,cnt = 0;
SysTick->LOAD=(u32)nms*fac_ms;//
SysTick->VAL =0x00; //
SysTick->CTRL=0x01 ; //
do
{
temp=SysTick->CTRL;//A:这里用代码测试,确实跑了很多次
}
while(temp&0x01&&!(temp&(1<<16)));//B:这里设断点观察,temp的值从来不曾变化,
SysTick->CTRL=0x00; //C:程序确实跳出循环跑到了这里
SysTick->VAL =0X00; //
} [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
[mw_shl_code=c,true]#ifdef _SysTick #define SysTick ((SysTick_TypeDef *) SysTick_BASE) #endif /*_SysTick */[/mw_shl_code]
一周热门 更多>