久芯网

STM32H743使用USART突然发出字符‘\0’的问题

avatar 啊源股 提问时间: 2023-07-20 11:07:02 / 未解决
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,这个也能有影响吗?






如需获得 STM32H743 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

9个回答
  • avatar 啊源股
    回答时间: 2023-07-20 11:36:53

    出现异常以后,就算硬件reset,PC端立马收到'\0'

  • avatar yklstudent
    回答时间: 2023-07-20 12:01:03

    出现问题过滤掉好了,能不能继续正常接收

  • avatar 啊源股
    回答时间: 2023-07-20 12:23:01
    yklstudent 发表于 2022-8-23 22:26
    出现问题过滤掉好了,能不能继续正常接收

    不能,只要收到\0,后面收发都不正常了

  • avatar butterflyspring
    回答时间: 2023-07-20 12:48:50

    MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了。

  • avatar 啊源股
    回答时间: 2023-07-20 13:06:57
    butterflyspring 发表于 2022-8-24 10:21
    MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了 ...

    怎么查时钟问题呢

  • avatar 啊源股
    回答时间: 2023-07-20 13:27:16

    好像真的与IDLE有关,请问有没有办法在进入IDLE后,依然能够正常呢?或者不让进入IDLE?

  • avatar 啊源股
    回答时间: 2023-07-20 13:59:19
    butterflyspring 发表于 2022-8-24 10:21
    MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了 ...

    异常的时候,IRQHandler都没有进去了

  • avatar 废鱼
    回答时间: 2023-07-20 14:28:26

    换个串口监听工具试试。

  • avatar 啊源股
    回答时间: 2023-07-20 14:55:32

    更换过 现象一样,总之可以持续发给PC,但是收不到PC的数据了,没有进ISR

会员中心 微信客服
客服
回到顶部