
本帖最后由 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中断一次 |
谢谢版主
CM3指南说唤醒事件可以锁存,现在发生的事件可以唤醒将来执行的_WFE(); 纳尼!!!不知道为啥这样设计,但确实是如此。
我配置RX脚为上升下降沿都产生事件,发送数据到串口时候,RX脚的第一个边沿唤醒了MCU,而第二个边沿被锁存了起来,我再次调用_WFE(); 时候就被这个锁存起来的事件给唤醒了。直到再次使用_WFE(); 才成功。
如果RX脚配置为只有下降沿或者只有上升沿产生事件,那么往串口发送只有一个下降沿和一个上升沿的数据,如F0,F8,FC,FE之类,就不会有事件被锁存,下一次调用_WFE(); 就可以成功执行。
调试是痛苦过程,写在这当是备份记忆吧。