在对基础实验的要求了就有一项关于在STOP低功耗模式下,通过LPUART唤醒STM32U385的要求,并展示在唤醒后,LED正常闪烁的效果。
厂家提供的例程内容为:
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- MX_GPIO_Init();
- MX_LPUART1_UART_Init();
- MX_ICACHE_Init();
- BSP_LED_Init(LD2);
- BSP_LED_On(LD2);
- HAL_Delay(2000);
- HAL_DBGMCU_DisableDBGStopMode();
- HAL_UARTEx_EnableStopMode(&hlpuart1);
- if (HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)aRxBuffer, RXBUFFERSIZE) != HAL_OK)
- {
- Error_Handler();
- }
- BSP_LED_Off(LD2);
- HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
- BSP_LED_On(LD2);
- SystemClock_Config_fromSTOP();
- HAL_UARTEx_DisableStopMode(&hlpuart1);
- while (UserReceptionComplete == 0)
- {
- }
- if (HAL_UART_Transmit_IT(&hlpuart1, (uint8_t *)aRxBuffer, RXBUFFERSIZE) != HAL_OK)
- {
- Error_Handler();
- }
- while (1);
- }
经对程序的分析和测试,其作用和效果为:
.首先亮LD2,然后经过2秒的延时再将LD2熄灭并进入STOP低功耗模式。随后是通过串口LPUART1接收信息来触发从STOP低功耗模式向常规模式的转换,并再次点亮LD2。
在测试过程中,要求外部串口转换模块与开发板相连接,其中串口转换模块的接收引脚接PA2,模块的发送引脚接PA3。
图1 所用接口
此外,通过这个测试还可以进行两种整体下的功耗对比。
为便于直接观察并简化检测的过程,这里采用的是一块小巧的功耗检查表,它是通过串接到电源与开发板之间来获得检测结果的。
当LD2出于熄灭状态时,说明开发板已进入STOP低功耗模式,此时测得的值即为该模式下的功耗,其检测结果如图2所示。
图2 STOP模式的功耗
为从该模式下退出,此时需要在电脑侧发送信息以触发模式间的转换,间图2所示。
图3 串口发送及唤醒
当串口接收到信息后,便自动实现了模式间的转换。此时,可见到LD2重新被点亮,其功耗也会随着发生改变,其检测值如图4所示。
图4 唤醒后功耗
经对比,在两种不同的模式下,其功耗是存在相应变化的,说明不同模式下,其对功耗的影响。
为了唤醒后LD2闪烁的效果,需将程序修改为:
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- MX_GPIO_Init();
- MX_LPUART1_UART_Init();
- MX_ICACHE_Init();
- BSP_LED_Init(LD2);
- BSP_LED_On(LD2);
- HAL_Delay(2000);
- HAL_DBGMCU_DisableDBGStopMode();
- HAL_UARTEx_EnableStopMode(&hlpuart1);
- if (HAL_UART_Receive_IT(&hlpuart1, (uint8_t *)aRxBuffer, RXBUFFERSIZE) != HAL_OK)
- {
- Error_Handler();
- }
- BSP_LED_Off(LD2);
- HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
- SystemClock_Config_fromSTOP();
- HAL_UARTEx_DisableStopMode(&hlpuart1);
- while (UserReceptionComplete == 0)
- {
- }
- if (HAL_UART_Transmit_IT(&hlpuart1, (uint8_t *)aRxBuffer, RXBUFFERSIZE) != HAL_OK)
- {
- Error_Handler();
- }
- while (1)
- {
- BSP_LED_On(LD2);
- HAL_Delay(2000);
- BSP_LED_Off(LD2);
- HAL_Delay(2000);
- }
- }
这样就达到了基础实验中,对该项的要求。
切换工作模式的演示:
不同模数的功耗检测演示:
|