因为按键 K_UP 连接在PA0 管脚上,并且是高电平有效,这样一来就可以使用 K_UP按键来退出待机模式。 (3)进入待机模式 进入待机模式, 首先要设置 SLEEPDEEP 位 ( 详见 《 Cortex M3 权威指南(中文)》 , chpt13 Cortex-M3 的其它特性--电源管理章节) ,接着我们通过 PWR_CR设置 PDDS 位,使得 CPU 进入深度...
PWR_EnterSTANDBYMode(void); 4、最后编写 WK_UP 中断函数。 代码 实验一的代码。 代码语言:javascript 复制 #include"sys.h"#include"delay.h"#include"usart.h"#include"led.h"#include"key.h"intmain(void){NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2delay_init(168);//...
To configure the wake up timer to 60s the WakeUpCounter is set to 0xFFFF: Wakeup Time Base...
System Wake-Up : 设置低功耗模式下的自动唤醒功能,通过引脚PA0。 Timebase Source : 一般指HAL的时基,即HAL库中的uwTick,用于实现HAL_Delay()以及作为各种timeout时钟的基准。一般情况下直接选择默认的Sys Tick(嘀嗒定时器)来维护SYS Timebase Source即可,即直接放在SysTick_Handler()中断服务函数中,也就是下面...
按下KEY0进入待机模式 KEY_UP唤醒 #include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include "beep.h" #include "key.h" #include "usmart.h" #include "lcd.h" #include "rtc.h" #include "rng.h" #include "key.h" ...
PWR_ClearFlag(PWR_FLAG_WU);//清除 Wake-up 标志 PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚 使能或者失能唤醒管脚功能 PWR_EnterSTANDBYMode();//进入待机模式 } 该函数首先使能电源PWR时钟,然后清除唤醒标志位,并使能 WK_UP管脚为唤醒方式,最后进入待机模式。这一过程在前面步骤介绍中已经提了。
SYS 设置,选择 Debug 为 Serial Wire 三、待机模式 3.1 WKUP按键唤醒 3.1.1 流程图 3.1.2 HAL库与标准库代码比较 STM32CubeMX 使用 HAL 库的代码: intmain(void){// 检测复位来源if(__HAL_PWR_GET_FLAG(PWR_FLAG_SB)==SET){__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);printf("\r\n 待机唤醒复位 \r\...
void Sys_Enter_Standby(void){ while(WKUP_KD); //等待WK_UP按键松开(在有RTC中断时,必须等WK...
根据上面的了解,我们就可以写出进入待机模式的代码,Sys_Standby 的具体实现代码如下: //进入待机模式voidSys_Standby(void){SCB->SCR|=1<<2;//使能SLEEPDEEP位 (SYS->CTRL)RCC->APB1ENR|=1<<28;//使能电源时钟PWR->CSR|=1<<8;//设置WKUP用于唤醒PWR->CR|=1<<2;//清除Wake-up 标志PWR->CR|=1<...
/* USER CODE BEGIN 4 */voidSys_Enter_Standby(void){__HAL_RCC_PWR_CLK_ENABLE();//使能PWR时钟__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除Wake_UP标志HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);//设置WAKEUP用于唤醒HAL_PWR_EnterSTANDBYMode();//进入待机模式}/* USER CODE END 4 */ ...