求助该语句while(temp&0x01&&!(temp&(1<<16)));

2019-07-21 01:29发布

do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   

怎么实现的循环功能,temp值不是一直都是1吗?

SysTick->CTRL值是一直变化的?怎么变化的?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
八度空间
1楼-- · 2019-07-21 02:03
1、好好看下嘀嗒定时器的寄存器说明吧
2、你的C基础还不够扎实
Mobile1991
2楼-- · 2019-07-21 02:54


当滴答定时器计到0,temp的bit16为1。
此时(!(temp&(1<<16)))=0,即while条件为假,跳出。

winter1970
3楼-- · 2019-07-21 07:58
感谢“ Mobile1991”的答案,讲的很好,有图有文字,一看就懂。
 “99llllll ”的C语言没问题,只是之前不清楚CTRL寄存器的变化规律,所以就没明白那段程序的作用;
所以,“Mobile1991”的答案才是推荐参考答案!
150315175
4楼-- · 2019-07-21 11:09
 精彩回答 2  元偷偷看……
Jzeng666
5楼-- · 2019-07-21 11:12
领教了
飞一样的梦
6楼-- · 2019-07-21 16:32
 精彩回答 2  元偷偷看……

一周热门 更多>