关于Arduino的串口中断

2025-05-09 16:57:10
推荐回答(3个)
回答1:

如果想用真正的串口中断,你需要去学习avr芯片相关知识才可以(Arduino使用的就是avr芯片 ATmega系列),因为绝大多数东西被Arduino隐藏了,你看不到也用不了,甚至会坏,比如强行手动使用串口中断会导致所有Serial函数无法使用等等。

回答2:

我也有相同的问题。我要DIY一个平衡车。串口的陀螺仪(MPU6050)每50ms传输一帧数据给arduino。假如程序运行一个loop需要200ms,是不是就没有办法确保每一帧的数据都接收到呢?就算不写很多的主程序,尽量减少main loop的运行时间,抓过来的数据还是比较乱。会漏掉数据。或者数据错误。。。想了好几天了,没有解决的方法。不知道是不是我的想法彻头彻尾的就是错的。难道说不一定要每一帧的数据都收到?是不是每一个loop抓到一组数据就行了?

回答3:

void setup()
{
Serial.begin(9600);
}

void loop()
{
while (Serial.available() > 0) //如果串口接收到任何数据
{
执行函数;
delay(2);
}
if (a == Serial.read()) //如果串口接收到特定的值
{
执行函数;
Serial.println(a);
}
}