我写了一个基于Arduino的类,使用中断。目前我需要在主Arduino代码中创建ISR的实例,然后将其传递给该类的初始化函数,该函数运行“attachInterrupt”。这是非常糟糕的风格(为什么用户需要知道我使用了中断?),因此我希望整个过程都包含在类的头文件和源文件中。
我尝试将ISR作为静态友元函数,但是它无法访问类的任何非静态成员。所以我现在有点困惑,关于这种方法应该是静态的还是非静态的。我的尝试看起来像这样(将源代码和头文件合并在此以方便阅读):
我尝试将ISR作为静态友元函数,但是它无法访问类的任何非静态成员。所以我现在有点困惑,关于这种方法应该是静态的还是非静态的。我的尝试看起来像这样(将源代码和头文件合并在此以方便阅读):
class myClass{
friend void ISR();
void init(){attachInterrupt(ISR,..,..);}
}
static void ISR(){
all sort of stuff using myClass.members;
}
但是编译器在静态函数中使用非静态成员时报错。 我希望能得到一些帮助,了解如何使它正常运行。