[STM32U3] 【STM32U385RG 测评】+低功耗模式下,通过LPUART串口唤醒实验
这个低功耗模式以前没玩过这两天都在摸索着IDE软件编译器也不给力经常报错说找不到文件但是文件path路径都已经设置了的哎说多了都是泪一、首先通原理图、数据手册找到自己需要的DAC端口以及连接到的外部管脚还是老三样找硬件原理图看看需要的串口在哪里别接错了LPUART1设置的时候需要主要默认的串口不是PA2、PA3需要手动更改二、IDE软件配置1、GPIO2、ICACHE3、LPUART14、PWR5、NVIC6、时钟手册上说HSI稳定点当然这个没验证过有兴趣也可以验证下三、代码调试生成代码后可以参考例程来调试不过需要将自己需要的文件放在目录下面路径也需要添加不过可能会遇到有文件却报错显示找不到文件的尴尬情况哦这时候不要纠结了可以换软件或者直接使用例程在例程里面修改。#if!defined(BOARD_IN_STOP_MODE)/* Configure User push-button in Interrupt mode */BSP_PB_Init(BUTTON_USER,BUTTON_MODE_EXTI);/* Wait for User push-button press before starting the Communication.In the meantime, LD2 is blinking */while(UserButtonStatus 0){/* Toggle LD2*/BSP_LED_Toggle(LD2);HAL_Delay(100);}BSP_LED_Off(LD2);/* The board sends the message and expects to receive it back *//*##-1- Start the transmission process #####################################*/if(HAL_UART_Transmit_IT(hlpuart1, (uint8_t*)aTxBuffer, TXBUFFERSIZE) !HAL_OK){Error_Handler();}/*##-2- Put UART peripheral in reception process ###########################*/if(HAL_UART_Receive_IT(hlpuart1, (uint8_t*)aRxBuffer, RXBUFFERSIZE) !HAL_OK){Error_Handler();}/* Wait for reception complete callback */while(UserReceptionComplete 0){}/* Compare the expected and received buffers */if(Buffercmp((uint8_t*)aTxBuffer, (uint8_t*)aRxBuffer, RXBUFFERSIZE)){Error_Handler();}/* Turn on LD2 if test isok*/BSP_LED_On(LD2);#else这段代码主要是串口接收、发送数据的可以直接使用例程里面的/* LD2 is on till stop mode */BSP_LED_On(LD2);/* wait for two seconds before test start */HAL_Delay(2000);/* Disable Debug during Stop mode */HAL_DBGMCU_DisableDBGStopMode();/* Enable MCU wake-up by LPUART */HAL_UARTEx_EnableStopMode(hlpuart1);/*##-1- Put UART peripheral in reception process ###########################*/if(HAL_UART_Receive_IT(hlpuart1, (uint8_t*)aRxBuffer, RXBUFFERSIZE) !HAL_OK){Error_Handler();}/* about to enter STOP mode: switch off LD2 */BSP_LED_Off(LD2);/* enter STOP mode */HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);/* The board receives the message from the other board. Message reception wakes up the board. *//* Switch On LD2 */BSP_LED_On(LD2);/* At that point, MCU has beenawoken: LD2 has been turned back on ; Wake Up based on RXNE flag successful */SystemClock_Config_fromSTOP();/* Disable MCU wake-up by LPUART */HAL_UARTEx_DisableStopMode(hlpuart1);/* Wait for reception complete callback */while(UserReceptionComplete 0){}/*##-2- Start the transmission process #####################################*//* Send back received buffer */if(HAL_UART_Transmit_IT(hlpuart1, (uint8_t*)aRxBuffer, RXBUFFERSIZE) !HAL_OK){Error_Handler();}这部分主要是通过中断/串口唤醒MCU接收数据while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */BSP_LED_Toggle(LD2);/* wait for two seconds before test start */HAL_Delay(100);}/* USER CODE END 3 */}唤醒后LD2等开始闪烁四、实验效果视频复位后进入低功耗模式测得电流0.35mAUSER唤醒后电流1.2mA左右串口发送数据可以收到并显示按复位进入低功耗模式串口发送数据唤醒MCULD2闪烁。代码STOP低功耗模式下唤醒.rar(9.2 KB, 下载次数: 0)---------------------作者LiuDW091链接https://bbs.21ic.com/icview-3473390-1-1.html?_dsign767aef7f来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。