Arduino 哪些函数don';使用noInterrupts()/interrupts()块时不工作?

Arduino 哪些函数don';使用noInterrupts()/interrupts()块时不工作?,arduino,interrupt,Arduino,Interrupt,我在Arduino库中有一些时间敏感的代码,希望在和之间对其进行保护。文件规定: 当中断被禁用时,某些功能将不起作用,传入的通信可能被忽略 有没有列出哪些(标准)函数不起作用?特别是,我需要通过调用millis()来节省时间。millis()后面的数字是否仍在更新,或者我是否应该将其移出noInterrupts()/interrupts()块?特别是millis()将通过禁用中断来禁用,因为该调用依赖于连接到计时器的中断,该计时器以约1KHz的频率触发。不过,我仔细阅读了官方文件,没有找到可能受

我在Arduino库中有一些时间敏感的代码,希望在和之间对其进行保护。文件规定:

当中断被禁用时,某些功能将不起作用,传入的通信可能被忽略

有没有列出哪些(标准)函数不起作用?特别是,我需要通过调用millis()来节省时间。millis()后面的数字是否仍在更新,或者我是否应该将其移出noInterrupts()/interrupts()块?

特别是
millis()
将通过禁用中断来禁用,因为该调用依赖于连接到计时器的中断,该计时器以1KHz的频率触发。不过,我仔细阅读了官方文件,没有找到可能受到影响的详尽清单。我相信很多人都对官方文件中明显的缺失感到失望

再进一步看,控制
millis()
的计时器(ATmega文档中的计时器/计数器0)仍然在后台计数中断是否被启用——问题是,如果您的代码跨越中断将触发的时间,您可能会错过一个勾号。见下文参考资料

底线是,如果您需要中断,请保持
noInterrupts()
部分简短。并使附加到中断的代码更简洁。;)无论您是在草图中还是在裸机中编写代码,始终保持中断的快速输入和输出是非常重要的

这个