我正在尝试编写一个使用中断例程的Arduino库。一切似乎都没问题,没有抛出编译错误,但它不起作用,因为永远不会调用isr
例程。
在这个简化版本中,while
循环永远运行,尽管触发了正确的中断触发器。如果我在库外测试它,它可以正常工作。
这里可能有什么问题?
图书馆代码:
class test {
public:
int read(int clockPin);
volatile unsigned long called;
}
volatile unsigned long called=0;
static void isr() {
called++;
}
int test::read(int clockPin) {
attachInterrupt(digitalPinToInterrupt(clockPin), reinterpret_cast<void (*)()>(&isr), FALLING);
// or attachInterrupt(digitalPinToInterrupt(clockPin), isr, FALLING);
// none of them raise an error but it does not work
while (called==0) { delay(1); }
detachInterrupt(digitalPinToInterrupt(clockPin));
...
...
}