求助该语句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 21:05
飞一样的梦 发表于 2016-8-15 10:44
那为什么要加temp&0x01这句呢

temp&0x01,这一句是用来判断 systick 定时器是否还处
于开启状态,可以防止 systick 被意外关闭导致的死循环。
小笼包
2楼-- · 2019-07-21 21:46
飞一样的梦 发表于 2016-8-15 10:44
那为什么要加temp&0x01这句呢

第一位不是使能位吗,我推测temp&0x01是说当不使能的时候temp=0,继而temp&0x01=0 ,也同样跳出循环了
lipengyun168
3楼-- · 2019-07-21 21:49
 精彩回答 2  元偷偷看……
1498873933@qq.c
4楼-- · 2019-07-22 01:33
小笼包 发表于 2016-8-15 11:14
第一位不是使能位吗,我推测temp&0x01是说当不使能的时候temp=0,继而temp&0x01=0 ,也同样跳出循环了

朋友,是&&。不是||,你码字码错了
zhouozzy
5楼-- · 2019-07-22 02:17
飞一样的梦 发表于 2016-8-15 10:58
**** 作者被禁止或删除 内容自动屏蔽 ****

谢谢,虽然已经是很久之前的帖子了,解决了困扰我好几天的问题!!

一周热门 更多>