调试中出现代码已经执行,值也已经赋值,但是判断时依然按旧的值进行判断,导致出错,增加__ISB(); __DSB();解决该问题。
指令名 | 功能描述 |
DMB | 数据存储器隔离。DMB 指令保证: 都执行完毕后,才提交(commit)在它后面的存储器访问操作。 |
DSB | 数据同步隔离。比 DMB 严格: 都执行完毕后,才执行在它后面的指令(亦即任何指令都要等待存储器访 |
ISB | 指令同步隔离。最严格:它会清洗流水线,以保证所有它前面的指令都执 行完毕之后,才执行它后面的指令。 |