• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

USART是不能唤醒STM32的Stop mode吗?

羊吃狼 2014-06-11 浏览量:4016
 if(EXTI_GetITStatus(EXTI_Line10) != RESET)	
{	 
       LED1 = 0;
      SystemInit();        
      delay_init(72);	       
      printf(" USART WAKEUP stop mode testing ");
}
EXTI_ClearITPendingBit(EXTI_Line10);  

//
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource10);
EXTI_InitStructure.EXTI_Line=EXTI_Line10;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;	
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
今天捣鼓了一天了,一直没有捣鼓通USART唤醒Stop mode.但是手册上说Any interrupt都能唤醒MCU。然后又试过单独一个RXD作为外部事件来唤醒,但是还是没成!之前通过按键成功控制了,但是到了USART就行不同了。当我单独将RXD作为唤醒引脚时,USART输入又错误!!!
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:12

  • 这种问题:

    第一:你先检查硬件是否有问题

    第二:单独调试串口看看是否可以发送和接受数据

    第三:在前面两个基础上你再单独用RXD作为唤醒引脚来试试

    第四:如果第三不行,说明你的程序有问题。因为硬件部分已经在第一排除了。

    你为什么要用RXD作为唤醒引脚呢?

  • 理论上stm32的数字GPIO口都可以作为外部中断输入

    建议撸主重点关注一下GPIO的配置,是不是需要remap或者其他操作

    进入低功耗等等模式前,重新配置一下uart口

    唤醒后再配置为uart

    看样子撸主是想从计算机串口唤醒MCU啊

  • 另:最好能再了解一下uart通信的原理

    uart唤醒RX和TX是不是合适,还是需要使用流控等辅助管脚来唤醒

  • 1、SLEEP 模式:很容易实现,可以由中断唤醒,但省电较少。这时候要配合时钟的关闭来节电:不需要用到的外设关闭时钟,要用到时才打开。例如USART:要发送数据前,把USART的时钟使能,数据包发送完成后,立即关闭时钟。

    2、STOP 模式:需要外部中断唤醒。RTC报警唤醒给该模式带来了更加灵活的应用。但应用中有一个问题需要注意:在ADC数据采样的应用场合。如果使用STOP模式,假设采样率为200HZ,5毫秒唤醒一次启动ADC 采样,通过测试STOP唤醒的周期并不是很固定(可能是唤醒后需要恢复时钟设置,唤醒后自动使用内部的HSI时钟做为系统时钟),造成采样周期不是很固定,对滤波不利,例如工频陷波。

    1、STM32进入STOP模式后,当串口接收到数据时,需要唤醒STM32。

    进入STOP模式前、退出STOP模式后,需要怎么进行设置?

    答案:

    进入stop模式前,将串口的RxD设置为外部中断输入。

    在stop模式时,RxD端口接收到数据时(有上升沿或下降沿时),产生中断。

    中断服务程序中,恢复MCU的时钟,再将RxD端口当串口接收端口使用即可

  • 深夜还在苦命的路过,要认真看手册哦

    注意看stop 模式下不是any interrupt,是要EXIT;所以你之前用按键成功了

    PS:楼上有怎么设置的提示

  • 前面的都没有问题,就是单独用RXD作为唤醒,失败了!可能是我哪里弄错了

  • 我是想只要USART有数据来了就唤醒,试了单独用RXD,但是没试成

  • 这个已经够清晰了。之前也用RXD试过,可能是我弄错了。我再试试把,我的疑惑是回复MCU时钟后,同时要不要屏蔽RXD的外部中断输入,不然当有数据时,它会不定时的产生中断?

  • 现在有新的Lx系列,功耗更低,而且配置更简单。

相关问题

问题达人换一批

USART是不能唤醒STM32的Stop mode吗?