先交代一下背景: 最近在做这么一个测试,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();//唤醒后时钟的配置,参考了库函数的代码 } } |
NFC天线设计工具
STM32L071 配置RTC为24小时制,13点的时候会变为1点
STM32L071CBT6低温环境下无法正常工作
nucleo-l053r8 BOARD NAME修改
各位好,我遇到了一个问题,一直没有解决,关于STM32L071 bank问题
STM32L073RZT6 PA2不能置1
STM32L07系列低功耗串口应用
stm32L0系列串口稳定性
谁有STM32L051的数据手册RM0377和编程手册PM0223的中文版,
查之前我的提问
RE:STM32L0停机唤醒模式求助?????????