关于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的 不然怎么这个错误会存在到现在
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。