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的 不然怎么这个错误会存在到现在
一周热门 更多>