单片机串口简单问题 为什么要所中断要全部关掉??

2025-04-17 20:01:20
推荐回答(4个)
回答1:

我觉得是这样子的,关闭中断是为了避免更高优先级的中断信号抢占MCU的资源,因为你所设置的串口通讯模式必须保证上位机、下位机时序一致,如果这时候中断,则会时序混乱,通讯错误,很多单总线的IC工作时也要关闭中断就是为了避免更改优先级中断导致时序混乱问题。
并不是你不关中断就一定不能正常工作,这只是避免一些隐患问题。

回答2:

就像二楼说的, 如果要保证数据的通信,就必须在发送数据的时候关闭中断。因为单片机在运行的时候假如你开了某种中断(不是串口的),有一定的几率会出现错误中断信号,从而导致放弃正在发送的信息。虽然这种几率很低,但要确保正常的运行,所有可能出现的问题都考虑到,所有的隐患都要去掉。所以关所有中断。
而你这个程序是用软件查询的方式来确定是否接收到数据或者发送完数据。所以不需要串口中断来接收和发送数据。

回答3:

还是我来告诉你吧.
开中断以后是应该编写相应的"中断函数"的,在这里你没有编写中断函数,你即使开启全局中断(EA=1)也是没有影响的.

回答4:

既然你没有采用中断的方式接受数据全局中断当然可以关掉,不过就算你打开程序应该也是没 问题的