stm32在stop模式下串口唤醒会丢失数据?

keanxun1   2008-9-9 20:46 楼主
                                 我想让设备平时在stop模式下,串口有数据来时才唤醒处理,但是现在发现唤醒后数据总是丢失前面一部分,是不是因为唤醒后重新设置外设导致数据丢失?还是我程序问题?可以避免吗?

回复评论 (8)

唤醒后数据总是丢失前面一部分

  唤醒后数据总是丢失前面一部分,这是正常现象,因为唤醒后MCU有一个初始化的过程:晶振从停振状态开始起振并稳定下来,之后PLL也需要稳定时间,等等。
  这不是STM32独有的问题,对于ARM7/9也是如此,对于其它MCU也有类似问题,只是初始化的过程时间长短不同而已。
点赞  2008-9-10 09:53

那么一般是怎么处理呢?

                                 丢失数据是肯定不行的,是不是就不能用stop模式了?用sleep模式?我用sleep模式的时候,发现如果不关闭串口时钟,用WFI()也无法进入sleep模式,总是立即醒来,如果关闭串口时钟就无法通过串口唤醒了。能说明一下怎么进入sleep模式吗?需要串口唤醒,并且需要定期喂看门狗
点赞  2008-9-10 10:07

怎么处理

                                   怎么处理?简单的办法就是,通过发无效的数据来唤醒STM32,然后过一段时间在进行串口通信。当然,可以让被唤醒的STM32发个特定的数据告诉对方,避免对方死等。
点赞  2008-9-10 10:16

这个不行……

                                 发送数据端不是我能够控制的,不能修改……
点赞  2008-9-10 10:30

解决了

                                 只能用sleep模式了,之前忘了关闭systick,所以老是自动唤醒
点赞  2008-9-10 16:14

请问stop模式下,你是如何唤醒的?

                                 因为串口的中断不能将STM32从STOP模式唤醒。
点赞  2008-9-12 10:46

可以唤醒

                                 不过需要配置串口到外部中断中
点赞  2008-9-13 11:25

请教楼上的,怎么把串口配置到外部中断的?

请教楼上的,怎么把串口配置到外部中断的?

另外:电路方面要做什么处理吗?

谢谢!
点赞  2008-9-13 14:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复