interrupt - 如何确保中断被延迟,直到"sleep for interrupt" 发出?

  显示原文与译文双语对照的内容

设想以下场景微控制器是从总线上的从属,例如 SPI 。 一旦在总线上写入字节,它想要睡眠直到字节被传输。 代码将类似于下面这样:


write_byte_to_bus(byte);
wait_for_interrupt();/* a single assembly instruction */

现在,由于微控制器不是主机,理论上( 如果公交车真的快了) 可以立即作为主要请求传输,因这里如下:


write_byte_to_bus(byte);
 interrupt arrives saying
 that operations is done
wait_for_interrupt();

这将导致微控制器在中断到达后休眠中断。 如何保护自己免受这种情况的影响?

时间: 作者:

对于特定的微控制器,可以先使用 SIM 禁用中断,然后执行 write_byte_to_bus,然后将 WFI 适当地启用中断。

其他微控制器可能有不同的管理方法。

...