化雨眠 发表于 2014-9-19 16:21:00

STM32L0停机唤醒模式求助?????????

先交代一下背景:
               最近在做这么一个测试,stm32L053进入停机模式,配置stm32的两个串口互相转发数据,并返回到PC端的调试助手。串口使用的是中断接收,
            我看了一下文档,说是外部事件可以唤醒,所以,就没有添加按键中断。
            
            贴一下源码:
            //串口UART1 中断接收
            void USART1_IRQHandler(void)
            {
                  HAL_UART_IRQHandler(&UartHandle);
                flag_uart1=1;//标志在主函数里面发送数据
               //如果串口1接收到数据,则通过串口2将串口1接收的数据回发到PC端
               TxBuffer2=aRxBuffer;
               HAL_UART_Receive_IT(&UartHandle,(uint8_t *)aRxBuffer,1);//使能接收中断
            }
            //串口UART2 中断接收
            void USART2_IRQHandler(void)
            {
                     HAL_UART_IRQHandler(&Uart2Handle);//中断服务函数
                     flag_uart2=1;      //标志在主函数里面发送数据
                  //如果串口2接收到数据,则通过串口1将串口2接收的数据回发到PC端
                  aTxBuffer=RxBuffer2;//将数据保存至缓存      
                  HAL_UART_Receive_IT(&Uart2Handle,(uint8_t *)RxBuffer2,1);//使能接收中断
            }
            
            int main(void)
            {
                HAL_Init();//硬件抽象层初始化
                SystemClock_Config();
                SystemPower_Config();
                  
                      USART1_Init();//串口 UART1
                      USART2_Init();//串口 UART2               
                            while(1)
                            {                                       
                                          if( (flag_uart1==1) || (flag_uart2==1))//如果中断接收了数据
                                          {                                       
                                                            if(flag_uart1==1)
                                                            {
                                                                            flag_uart1=0;
                                                                            //如果串口1接收到数据,则通过串口2将串口1接收的数据回发到PC端                                                      
                                                                            HAL_UART_Transmit(&Uart2Handle,(uint8_t *)TxBuffer2,1,100);                                                
                                                            }
                                                            if(flag_uart2==1)
                                                            {
                                                                            flag_uart2=0;
                                                                            //如果串口2接收到数据,则通过串口1将串口2接收的数据回发到PC
                                                                            HAL_UART_Transmit(&UartHandle,(uint8_t *)aTxBuffer,1,100);                                                         
                                                            }
                                          }
                                    HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFE);      //进入停机模式,等待外部事件唤醒               
                                    SystemClockConfig_STOP();//唤醒后时钟的配置,参考了库函数的代码                                                            
                            }
            }

发表于 2014-9-20 09:01:35

RE:STM32L0停机唤醒模式求助?????????

楼主遇到什么问题了呢?能把问题详细说一下吗?
页: [1]
查看完整版本: STM32L0停机唤醒模式求助?????????