|
发表于 2020-2-13 15:23:57
|
显示全部楼层
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
osDelay(5000);
LUART1_SendString("hlpuart1 go to stop mode!\r\n");
//使能LPUART的停机唤醒
HAL_UARTEx_EnableStopMode(&hlpuart1);
while(__HAL_UART_GET_FLAG(&hlpuart1,USART_ISR_BUSY)==SET){}
//while(__HAL_UART_GET_FLAG(&hlpuart1,USART_ISR_REACK)==SET){}
//接收地址0x99(发送数据MSB位要为1),可以唤醒
WakeUpSelection.WakeUpEvent = UART_WAKEUP_ON_READDATA_NONEMPTY;
WakeUpSelection.AddressLength = UART_ADDRESS_DETECT_7B;
//WakeUpSelection.Address = 0x99;
if(HAL_UARTEx_StopModeWakeUpSourceConfig(&hlpuart1, WakeUpSelection)!= HAL_OK)
{
;
}
CLEAR_BIT(LPUART1->CR1,USART_CR1_RXNEIE);//关闭串口接收中断
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);//进入停机模式
SystemClock_Config();//退出停机模式要重新配置HSE和pll
SET_BIT(LPUART1->CR1,USART_CR1_RXNEIE);//使能串口中断
HAL_UARTEx_DisableStopMode(&hlpuart1);
}
/* USER CODE END 5 */
} |
|