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

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

[复制链接]
化雨眠 提问时间:2014-9-19 16:20 /
先交代一下背景:
                 最近在做这么一个测试,stm32L053进入停机模式,配置stm32的两个串口互相转发数据,并返回到PC端的调试助手。串口使用的是中断接收,
            我看了一下文档,说是外部事件可以唤醒,所以,就没有添加按键中断。
            
            贴一下源码:
            //串口UART1 中断接收
            void USART1_IRQHandler(void)
            {
                  HAL_UART_IRQHandler(&UartHandle);
                  flag_uart1=1;//标志在主函数里面发送数据
                 //如果串口1接收到数据,则通过串口2将串口1接收的数据回发到PC端
                 TxBuffer2[0]=aRxBuffer[0];
                 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[0]=RxBuffer2[0];//将数据保存至缓存        
                    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();//唤醒后时钟的配置,参考了库函数的代码                                                                
                            }
            }
收藏 评论1 发布时间:2014-9-19 16:20

举报

1个回答
废鱼 回答时间:2014-9-20 09:01:35

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

楼主遇到什么问题了呢?能把问题详细说一下吗?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版