我想让设备平时在stop模式下,串口有数据来时才唤醒处理,但是现在发现唤醒后数据总是丢失前面一部分,是不是因为唤醒后重新设置外设导致数据丢失?还是我程序问题?可以避免吗?
唤醒后数据总是丢失前面一部分
唤醒后数据总是丢失前面一部分,这是正常现象,因为唤醒后MCU有一个初始化的过程:晶振从停振状态开始起振并稳定下来,之后PLL也需要稳定时间,等等。
这不是STM32独有的问题,对于ARM7/9也是如此,对于其它MCU也有类似问题,只是初始化的过程时间长短不同而已。
那么一般是怎么处理呢?
丢失数据是肯定不行的,是不是就不能用stop模式了?用sleep模式?我用sleep模式的时候,发现如果不关闭串口时钟,用WFI()也无法进入sleep模式,总是立即醒来,如果关闭串口时钟就无法通过串口唤醒了。能说明一下怎么进入sleep模式吗?需要串口唤醒,并且需要定期喂看门狗
怎么处理
怎么处理?简单的办法就是,通过发无效的数据来唤醒STM32,然后过一段时间在进行串口通信。当然,可以让被唤醒的STM32发个特定的数据告诉对方,避免对方死等。
这个不行……
发送数据端不是我能够控制的,不能修改……
解决了
只能用sleep模式了,之前忘了关闭systick,所以老是自动唤醒
请问stop模式下,你是如何唤醒的?
因为串口的中断不能将STM32从STOP模式唤醒。
请教楼上的,怎么把串口配置到外部中断的?
请教楼上的,怎么把串口配置到外部中断的?
另外:电路方面要做什么处理吗?
谢谢!