1
我正在通過I2C通信接收消息的Arduino項目。我有幾個例程,程序花了很多時間在他們沒有返回。目前,當發生中斷時,我設置了一箇中斷標誌,我基本在幾個地方檢查這些功能,如果發生中斷,我將返回。我想知道中斷函數是否可以調用我的入口點函數。Arduino中斷函數調用另一個函數可以嗎?
所以這是我當前的中斷功能
void ReceivedI2CMessage(int numBytes)
{
Serial.print(F("Received message = "));
while (Wire.available())
{
messageFromBigArduino = Wire.read();
}
Serial.println(messageFromBigArduino);
I2CInterrupt = true;
}
,並在該程序花費大部分時間的功能,我不得不這樣做的像情侶的地方
if(I2CInterrupt) return;
現在我想知道是否可以在我的ReceiveI2CMessage中調用我的入口點函數。我主要關心的是,這可能會導致內存泄漏,因爲我留下了中斷髮生時我正在執行的功能,並且我將回到程序的開始部分。
哦,這對中斷部分是有意義的,但我的主要問題是我的程序每隔30秒左右訪問一次主循環,因爲它在2個其他功能中忙碌。如果(i2cmessage == 1)到處都有中斷髮生而沒有擴散,是否有從這些函數返回的簡單方法? – Saik
微控制器設計中每30秒只訪問一次主循環並不典型。這通常表明設計可以改進。但好消息是,如果你只是擔心內存泄漏,即使很小的泄漏很快就會顯現出來,因爲這些設備上的SRAM非常小。壞消息是,如果你有泄漏,無論如何你都需要認真對待你的設計。我建議所有函數,特別是中斷的快速返回。 – TomServo