hi , 您好,希望得到帮助! 我在调试USART的时候,写了一个while(1)等待PC端传过来的数据,收到以后回传给PC。 开机后,PC可以正常下发字符给MCU,MCU也能正常回传数据给PC,但是静置一段时间后,PC突然收到一个字符'\0',这时候USART就无法正常工作了。 ISR的变化规律为: 正常收发的时候值为0x006010D0 异常的时候值为0x006210D0 我把ICR强制写入0XFFFFFFFF,ISR变为0x006200C0 ,但是依然无法正常工作,即使在keil点击reset,依然异常。 请教一下解决方法,谢谢! 异常恢复办法: PC端接着串口工具,串口工具连着MCU,这时候重新给MCU上下电,PC端还是收到'\0',异常依然存在。 但是!PC端移除串口工具,MCU先断电,然后PC端接入串口工具,重新打开PC端串口软件等待接收,这时候重新给MCU上电,PC端就不会收到'\0'了,异常消除? 非常不解,串口工具是FT232,这个也能有影响吗? |
出现异常以后,就算硬件reset,PC端立马收到'\0'
出现问题过滤掉好了,能不能继续正常接收
出现问题过滤掉好了,能不能继续正常接收
不能,只要收到\0,后面收发都不正常了
MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了。
MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了 ...
怎么查时钟问题呢
好像真的与IDLE有关,请问有没有办法在进入IDLE后,依然能够正常呢?或者不让进入IDLE?
MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了 ...
异常的时候,IRQHandler都没有进去了
换个串口监听工具试试。
更换过 现象一样,总之可以持续发给PC,但是收不到PC的数据了,没有进ISR