打印
[应用相关]

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

[复制链接]
10151|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dorice|  楼主 | 2008-9-9 20:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想让设备平时在stop模式下,串口有数据来时才唤醒处理,但是现在发现唤醒后数据总是丢失前面一部分,是不是因为唤醒后重新设置外设导致数据丢失?还是我程序问题?可以避免吗?
沙发
ijk| | 2008-9-10 09:53 | 只看该作者

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

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

使用特权

评论回复
板凳
dorice|  楼主 | 2008-9-10 10:07 | 只看该作者

那么一般是怎么处理呢?

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

使用特权

评论回复
地板
ijk| | 2008-9-10 10:16 | 只看该作者

怎么处理

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

使用特权

评论回复
5
dorice|  楼主 | 2008-9-10 10:30 | 只看该作者

这个不行……

发送数据端不是我能够控制的,不能修改……

使用特权

评论回复
6
dorice|  楼主 | 2008-9-10 16:14 | 只看该作者

解决了

只能用sleep模式了,之前忘了关闭systick,所以老是自动唤醒

使用特权

评论回复
7
ST_ARM| | 2008-9-12 10:46 | 只看该作者

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

因为串口的中断不能将STM32从STOP模式唤醒。

使用特权

评论回复
8
dorice|  楼主 | 2008-9-13 11:25 | 只看该作者

可以唤醒

不过需要配置串口到外部中断中

使用特权

评论回复
9
jtingwang| | 2008-9-13 14:46 | 只看该作者

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

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

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

谢谢!

使用特权

评论回复
10
qingdayrr| | 2012-2-21 13:01 | 只看该作者
请问sleep模式下可用usart唤醒吗,怎么处理?

使用特权

评论回复
11
wudingzhiying| | 2012-2-21 22:03 | 只看该作者
6# dorice
你好,请问你用串口能唤醒sleep了吗??我现在刚接触这个睡眠,调程序调了很长时间了,就是无法唤醒,请问可否帮我解答一下呢??我的qq是347698738.谢谢

使用特权

评论回复
12
dingwave_2000| | 2015-6-16 15:31 | 只看该作者
wudingzhiying 发表于 2012-2-21 22:03
6# dorice  
你好,请问你用串口能唤醒sleep了吗??我现在刚接触这个睡眠,调程序调了很长时间了,就是无 ...

你把串口接收线配成外部中断,唤醒后再配成串口不就完了!

使用特权

评论回复
13
dingwave_2000| | 2015-6-16 15:37 | 只看该作者
我有个问题控扰我很久了,我有个1S的RTC定时唤醒中断,另外我还想当有按键按下或串口有中断时也来随机唤醒CPU,基本上可以实现唤醒,但有个很重要的问题是,如果在定时时间未到时,外部或者串口中断到来,那么这时提前唤醒了CPU,这时中断返回时我需要返回去执行串口数据处理或是键盘处理,而不是去返回到当时休眠指令的下一条指令,这时如果改变程序跳转呢?

使用特权

评论回复
14
泰山特曲123| | 2015-6-17 00:24 | 只看该作者
执行完中断就会执行休眠的下一条指令

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

13

帖子

1

粉丝