用LowPowerReset就不会进入standby了
Low-power management reset
There are two ways to generate a low-power management reset:
1. Reset generated when entering Standby mode:
This type of reset is enabled by resetting nRST_STDBY bit in User Option Bytes. In this
case, whenever a Standby mode entry sequence is successfully executed, the device
is reset instead of entering Standby mode.
用LowPowerReset就不会进入standby了
Low-power management reset
There are two ways to generate a low-power management reset:
1. Reset generated when entering Standby mode:
This type of reset is enabled by resetting nRST_STDBY bit in User Option Bytes. In this
case, whenever a Standby mode entry sequence is successfully executed, the device
is reset instead of entering Standby mode.
wakeup pin唤醒的标志位在进入standby之前都清除掉了。
void Sys_Enter_Standby_WakeupPin_Enable(void)
{
/* Enable PWR and BKP clocks */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
/* Allow access to BKP Domain */
PWR_BackupAccessCmd(ENABLE);
RTC_ITConfig(RTC_IT_OW|RTC_IT_SEC,DISABLE);
RTC_ClearITPendingBit(RTC_IT_OW|RTC_IT_ALR|RTC_IT_SEC);
PWR_ClearFlag(PWR_FLAG_WU);
PWR_WakeUpPinCmd(ENABLE);
PWR_BackupAccessCmd(DISABLE);
PWR_EnterSTANDBYMode();
}
RTC_Configuration()开头一定要判断BKP_DR0是否是第一次写入值(假设是0x5050)
这个0X0505是第一次配置写入备份寄存器。你断电了就丢失了,还要重新配置的;
uint8_t RTC_Configuration(void)
if(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
RCC_LSEConfig(RCC_LSE_ON);
if(RTC_ReadBackupRegister(RTC_BKP_DR0)!=0x5050) //是否第一次配置?
{
RCC_LSEConfig(RCC_LSE_ON);//LSE 开启
楼主这个RTC例程如果不配置后备电池就没意义了。
对,我没有在backup寄存器放标识,所以我每次起来都有重新配置程序;
就是翻了几遍手册,不知道再去那里判断,能在同时开了WakeUpPin唤醒和RTC Alarm唤醒的同时区分开WakeUpPin唤醒和RTC Alarm唤醒,
所以来劳烦各位大神;
您理解错了,我没有独立给VBAT供电,但是VDD是一直接在VBAT上的
估计standby是无望了,今天试试STOP。
首先答案是:stm32F103,在待机模式(standby)下,无法区分rtc唤醒和wakeuppin唤醒。
在待机模式(standby)下唤醒后,除:电源控制/状态寄存器(PWR_CSR)。
而,电源控制/状态寄存器(PWR_CSR),只有一个WUF标志,这个标志为1表示:在WKUP引脚上发生唤醒事件或出现RTC闹钟事件。
所以无法再细分是WKUP引脚上发生唤醒事件,还是出现RTC闹钟事件。