Arduino 中断函数可以调用另一个函数吗?

赛克

我正在开发一个 Arduino 项目,在该项目中我通过 I2C 通信接收消息。我有几个例程,程序在其中花费了大量时间而没有返回。目前,我在发生中断时设置一个中断标志,我基本上在几个地方检查这些函数,如果发生中断,我就返回。我想知道中断函数是否可以调用我的入口点函数。

所以这是我目前的中断功能

void ReceivedI2CMessage(int numBytes)
{
    Serial.print(F("Received message = "));
    while (Wire.available())
    {
        messageFromBigArduino = Wire.read();
    }
    Serial.println(messageFromBigArduino);

    I2CInterrupt = true;
}

在程序花费大部分时间的功能中,我不得不在几个地方这样做

if(I2CInterrupt) return;

现在我想知道是否可以从我的 ReceiveI2CMessage 中调用我的入口点函数。我主要担心的是这可能会导致内存泄漏,因为当中断发生时我将正在执行的函数留在后面,然后我将返回到程序的开头。

汤姆伺服

没关系,但不是首选。少做一点总是更安全——也许只是设置一个标志——并尽可能快地退出中断。然后在主循环中处理标志/信号量。例如:

volatile uint8_t i2cmessage = 0;  // must be volatile since altered in an interrupt 

void ReceivedI2CMessage(int numBytes) // not sure what numBytes are used for...
{
    i2cmessage = 1;  // set a flag and get out quickly
}

然后在你的主循环中:

loop()
{
    if (i2cmessage == 1) // act on the semaphore
    {
        cli(); // optional but maybe smart to turn off interrupts while big message traffic going through...
        i2cmessage = 0; // reset until next interrupt
        while (Wire.available())
        {
            messageFromBigArduino = Wire.read();
            // do something with bytes read
        }
        Serial.println(messageFromBigArduino);
        sei(); // restore interrupts if turned off earlier
    }
}

这样就达到了中断的目的,理想情况下是在主循环中设置一个信号量来快速处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用联合通过SPI从arduino向另一个arduino发送花车

来自分类Dev

可以从plv8函数中调用另一个模式中的函数吗?

来自分类Dev

AWS Lambda函数可以从python文件调用另一个普通的python函数吗?

来自分类Dev

我可以调用具有另一个函数作用域的函数吗?

来自分类Dev

您可以从 PostgreSQL 中的另一个函数调用 call perform/do 函数吗?

来自分类Dev

有什么方法可以通过另一个函数参数调用一个函数吗?

来自分类Dev

有什么方法可以通过另一个函数参数调用一个函数吗?

来自分类Dev

AngularJS:Promise可以“调用”另一个函数吗?

来自分类Dev

我们可以从另一个函数调用OnCreate()方法吗

来自分类Dev

我可以模拟在Python测试中另一个函数调用中调用的函数返回吗?

来自分类Dev

我可以将一个函数传递给另一个函数,该函数调用具有依赖性的函数吗?

来自分类Dev

Python中的另一个类可以调用一个函数中返回的内容吗?

来自分类Dev

ANSI C-一个函数可以返回另一个函数吗?

来自分类Dev

可以在类的构造函数内部使用“ new”来调用Java中的另一个构造函数吗?

来自分类Dev

我可以将函数调用作为参数传递给另一个函数吗?Python

来自分类Dev

我可以从 C# 中另一个类的构造函数调用构造函数吗?

来自分类Dev

Arduino SocketIoClient - 没有匹配的调用函数

来自分类Dev

ajax调用完成后有什么办法可以调用另一个函数吗?

来自分类Dev

在另一个类中使用SoftwareSerial类的Arduino / C ++

来自分类Dev

在C ++ / Arduino中为2D矩阵分配另一个变量

来自分类Dev

在端口忙于另一个 Java 程序时使用 arduino 串行监视器?

来自分类Dev

从另一个调用一个构造函数有什么利弊吗?

来自分类Dev

arduino,函数返回char数组

来自分类Dev

arduino,函数返回char数组

来自分类Dev

Arduino 函数无故更改参数

来自分类Dev

是否可以在另一个类中调用一个类的构造函数?

来自分类Dev

函数调用另一个函数,但不等待返回值吗?

来自分类Dev

是否可以调用JavaScript中另一个函数中本地定义的函数?

来自分类Dev

rcpp函数调用另一个rcpp函数

Related 相关文章

  1. 1

    使用联合通过SPI从arduino向另一个arduino发送花车

  2. 2

    可以从plv8函数中调用另一个模式中的函数吗?

  3. 3

    AWS Lambda函数可以从python文件调用另一个普通的python函数吗?

  4. 4

    我可以调用具有另一个函数作用域的函数吗?

  5. 5

    您可以从 PostgreSQL 中的另一个函数调用 call perform/do 函数吗?

  6. 6

    有什么方法可以通过另一个函数参数调用一个函数吗?

  7. 7

    有什么方法可以通过另一个函数参数调用一个函数吗?

  8. 8

    AngularJS:Promise可以“调用”另一个函数吗?

  9. 9

    我们可以从另一个函数调用OnCreate()方法吗

  10. 10

    我可以模拟在Python测试中另一个函数调用中调用的函数返回吗?

  11. 11

    我可以将一个函数传递给另一个函数,该函数调用具有依赖性的函数吗?

  12. 12

    Python中的另一个类可以调用一个函数中返回的内容吗?

  13. 13

    ANSI C-一个函数可以返回另一个函数吗?

  14. 14

    可以在类的构造函数内部使用“ new”来调用Java中的另一个构造函数吗?

  15. 15

    我可以将函数调用作为参数传递给另一个函数吗?Python

  16. 16

    我可以从 C# 中另一个类的构造函数调用构造函数吗?

  17. 17

    Arduino SocketIoClient - 没有匹配的调用函数

  18. 18

    ajax调用完成后有什么办法可以调用另一个函数吗?

  19. 19

    在另一个类中使用SoftwareSerial类的Arduino / C ++

  20. 20

    在C ++ / Arduino中为2D矩阵分配另一个变量

  21. 21

    在端口忙于另一个 Java 程序时使用 arduino 串行监视器?

  22. 22

    从另一个调用一个构造函数有什么利弊吗?

  23. 23

    arduino,函数返回char数组

  24. 24

    arduino,函数返回char数组

  25. 25

    Arduino 函数无故更改参数

  26. 26

    是否可以在另一个类中调用一个类的构造函数?

  27. 27

    函数调用另一个函数,但不等待返回值吗?

  28. 28

    是否可以调用JavaScript中另一个函数中本地定义的函数?

  29. 29

    rcpp函数调用另一个rcpp函数

热门标签

归档