你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
啊源股 提问时间:2022-8-23 17:16 / 未解决
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,这个也能有影响吗?





收藏 评论9 发布时间:2022-8-23 17:16

举报

9个回答
啊源股 回答时间:2022-8-23 17:33:56
出现异常以后,就算硬件reset,PC端立马收到'\0'
yklstudent 回答时间:2022-8-23 22:26:02
出现问题过滤掉好了,能不能继续正常接收
啊源股 回答时间:2022-8-24 09:09:57
yklstudent 发表于 2022-8-23 22:26
出现问题过滤掉好了,能不能继续正常接收

不能,只要收到\0,后面收发都不正常了
butterflyspring 回答时间:2022-8-24 10:21:42
MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了。
啊源股 回答时间:2022-8-24 10:46:17
butterflyspring 发表于 2022-8-24 10:21
MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了 ...

怎么查时钟问题呢
啊源股 回答时间:2022-8-24 14:47:46
好像真的与IDLE有关,请问有没有办法在进入IDLE后,依然能够正常呢?或者不让进入IDLE?
啊源股 回答时间:2022-8-24 17:21:30
butterflyspring 发表于 2022-8-24 10:21
MCU端的时钟有没有发生变化。比如进入低功耗模式后唤醒等。 时钟发生了变化后,导致串口发送的数据就出错了 ...

异常的时候,IRQHandler都没有进去了
废鱼 回答时间:2022-8-25 08:31:15
换个串口监听工具试试。
啊源股 回答时间:2022-9-6 16:34:01
更换过 现象一样,总之可以持续发给PC,但是收不到PC的数据了,没有进ISR
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版