首先你用示波器来看下到底有没有接收端的数据波形,要是没有的话就是你串口终端初始化有问题,或者就是在你的中断中没有清除标志位。
你有时间在这里问,还不如把中断寄存器取出来看看到底是哪个标志置了位……
猜测你串口根本就没配置好,开了一堆中断源,然后某次产生校验错误或接收FIFO溢出之类的标志,然后你这程序脆弱的没有任何处理,于是永远、永远进进出出……
1)接收中断函数里怎么能有发送标志位的判断?
这句去掉:while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
2)你这个串口用的方式不对,你每接收一个数据需要进一次中断,实际上应该是进一次中断把所有数据接收完毕。通过一个超时判断判断是否后续还有数据,没有数据了才退出中断函数。
本文标签:stm32f107串口一直进中断