关于delay.c 应该算是原创吧

2019-08-14 04:20发布

do{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
关于这里的运算我发现有一个逻辑错误  在未到时间时 得到的temp值为 0x00000001  当到时间时 temp=0x00010001
根据c语言运算符优先关系 先算(1<<16) 设得到 b  再算 (temp&b)设得到c  再进行非运算 !c  设得到 d  之后是 temp & 0x01 && d
 先进行&运算 在进行&& 运算 也就是说 在得到 temp & 0x01 && d 这个式子之后 先进行 temp & 0x01 运算的
0x00000001 & 0x01 等于 0x00010001 & 0x01 等于 0x01 那为什么要进行这一步运算呢 
  这算是原创吧 

是不是stm32 都是跑os的 不然怎么这个错误会存在到现在
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-08-14 06:10
无错误啊。有错误那就不能正常运行了。
canglang
2楼-- · 2019-08-14 08:57
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-08-14 09:23
回复【3楼】canglang:
---------------------------------
哦,这个是防止其他地方意外关闭systick导致死循环的现象而设置的。
 
canglang
4楼-- · 2019-08-14 10:49
回复【4楼】正点原子:
回复【3楼】canglang: --------------------------------- 哦,这个是防止其他地方意外关闭systick导致死循环的现象而设置的。  
---------------------------
受教了 原来如此 谢谢原子哥的解惑 
13696229579
5楼-- · 2019-08-14 13:49

一周热门 更多>