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

从STOP模式醒来串口数据丢失问题。

[复制链接]
stuser 提问时间:2017-3-7 16:20 /
本帖最后由 stuser 于 2017-3-7 16:24 编辑

STM32F205MCU,我将USART1的RX引脚PA10同时配置为USART1 RX功能与事件触发功能。使用_WFE()让MCU进入STOP模式。之后向USART1发送数据使其退出STOP模式,然后恢复PLL。
这样有个问题,就是MCU从唤醒时刻到恢复完时钟需要一定时间,导致一部分串口数据丢失。
各位大神有什么高招可以使用串口唤醒MCU并且不丢失数据???
还有个问题,有时候执行_WFE();会失败,就是程序没停,而是往后继续跑,直到下次再执行_WFE();才成功。各位神人有遇到过么?
PS: 我开了Systick定时器,1ms中断一次
收藏 2 评论4 发布时间:2017-3-7 16:20

举报

4个回答
creep 回答时间:2017-3-7 16:28:05
要唤醒不丢失数据需要LPUART串口吧。

stuser 回答时间:2017-3-7 16:46:02
creep 发表于 2017-3-7 16:28
要唤醒不丢失数据需要LPUART串口吧。

谢谢版主
海迹天涯 回答时间:2017-3-7 17:24:15
学习下
stuser 回答时间:2017-3-7 19:54:27
自己来解答第二个问题,为什么_WFE(); 会执行失败?
CM3指南说唤醒事件可以锁存,现在发生的事件可以唤醒将来执行的_WFE(); 纳尼!!!不知道为啥这样设计,但确实是如此。
我配置RX脚为上升下降沿都产生事件,发送数据到串口时候,RX脚的第一个边沿唤醒了MCU,而第二个边沿被锁存了起来,我再次调用_WFE(); 时候就被这个锁存起来的事件给唤醒了。直到再次使用_WFE(); 才成功。
如果RX脚配置为只有下降沿或者只有上升沿产生事件,那么往串口发送只有一个下降沿和一个上升沿的数据,如F0,F8,FC,FE之类,就不会有事件被锁存,下一次调用_WFE(); 就可以成功执行。
调试是痛苦过程,写在这当是备份记忆吧。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版