试试定义flag变量时使用volatile,这个变量在中断和主程序中都是用了,例如
volatile uint8_t flag=0;
中断程序所在文件
extern volatile uint8_t flag;
上述应该不是主要原因,因为两个led灯都亮了,说明进入了串口接收中断,使flag=1,
可以这样,把中断里关于led的操作都注释掉,没意义时间太短,这样没接受到数据led全灭,接收到数据led全亮