任务目标
配置wakeup唤醒低功耗,上电灯亮5秒后关闭,进入低功耗模式;若未进入低功耗则会灯闪烁;当按下wakeup则唤醒MCU。
CubeMx配置
PA0配置wakeup唤醒
配置LED指示灯
别的无需配置。
代码
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
LED(0);
__HAL_RCC_PWR_CLK_ENABLE();//使能PWR时钟
if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)//检查并检查系统是否从待机模式恢复
{
/* Clear Standby flag */
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
}
HAL_Delay(5000);
LED(1);
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);//禁用所有使用的唤醒源:PWR_WAKEUP_PIN1 connected to PA.00
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除所有相关的唤醒标志
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);//启用连接到PA.00的WakeUp Pin
HAL_PWR_EnterSTANDBYMode();//进入待机模式
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(500);
LED_TURN();
}
/* USER CODE END 3 */
}
注:待机模式相当于MCU复位重启!