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

从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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版