单片机发送数据时最后会通过等待发送空标志位来等待数据发送完成,即通过uart往外发数据时,会通过“while(TI==0);”卡死等待数据发送完成,若在数据发送完成后,先进入UART发送完成中断,会将TI标志清零,这个 时候,程序就会卡死在“while(TI==0);”,您可以在“while(TI==0);”加入超时判断机制,当超过一定的时间如果还没有等到TI标志置1,就强制退出“while(TI==0);”。此方法不好控制时间计时的最小间隔。可在中断函数中不清除TI标志位,在数据发送完成后由硬件清零。
原文地址:https://www.cnblogs.com/jt930413/p/11016634.html
时间: 2024-10-13 17:13:38