连续两次反了检测标志位错误的代码,
while ((SCI0->SSR03 & _0040_SCI_UNDER_EXECUTE) == 1);
这个代码会一直false的,因为任何数与之与都不可能等于1.
造成这样的错误,是原来经常调用API,没有API做了一层处理。
while ((SCI0->SSR03 & _0040_SCI_UNDER_EXECUTE) );
写成这样 只要大于0 就是为真。
while ((SCI0->SSR03 & _0040_SCI_UNDER_EXECUTE) == _0040_SCI_UNDER_EXECUTE);
每次都写成是否等 最好。避免理解疏忽。
本文探讨了在嵌入式软件编程中常见的位操作误区,具体分析了一段涉及SCI寄存器检查的代码片段。指出直接比较位操作结果与期望值可能导致逻辑错误,并提出正确的代码实现方式,强调在位操作判断中使用相等性检查的重要性。
16万+

被折叠的 条评论
为什么被折叠?



