这个延时函数原理是什么呢?

2019-07-21 02:31发布

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]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。