项目本意是要设置了两个唤醒源 PA0和PA2 WKUP 事件 进入standby模式后 其中一个唤醒事件(比如PA0上有脉冲)产生会使两个打开的唤醒源 都有唤醒标志位(理论是只有一个有) 因此我做了如下测试,打开一个唤醒关闭一个唤醒 。 按照下面的代码:我在PA0上面输入脉冲也能唤醒CPU,唤醒后通过查看PWR->CSR2的值,发现标志信号置在PA2上面(CPU告诉我是PA2唤醒的,实际上PA都被禁止唤醒了) 新手上路请求各位大咖帮帮忙 void StartCommTask3(void const * argument) //uart1 { uint16_t length; int data; /* Infinite loop */ HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2); for(;;) { Get_Frame(&huart1,uart1_rxbuff,&length); data=HAL_GetTick(); if(uart1_rxbuff[0]=='s') { HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2); /* Clear the related wakeup pin flag */ __HAL_PWR_CLEAR_WAKEUP_FLAG(PWR_WAKEUP_PIN_FLAG2); HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2); //打开了PA2 WKUP __HAL_PWR_CLEAR_WAKEUP_FLAG(PWR_WAKEUP_PIN_FLAG1); HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); //关闭了PA0 WKUP HAL_PWR_EnterSTANDBYMode(); } if(uart1_rxbuff[0]=='p') { printf("%d ",data); printf("%d ",PWR->CSR2); } osDelay(10); } } |
ST的hal库有问题手头有STM32L4或STM32F7的帮忙测试DMA SD卡
STM32F756 DCMI +GC0308 Camera图片不正常
STM32F722RET6无法被JLINK/STLIN和IAR/KEIL识别
STM32F767以太网换PIN脚无数据
STM32F7 DSP库使用
没有人分享一下STM32F767 硬JPEG 编码解码吗
求STM32F777与FPGA通过FMC通信的参考设计
求STM32F7 1.15版本 固件库
STM32F746使用HAL库串口无法中断收数据
STM32F7xx AXIM & ITCM
1----
手册中提到的几种退出待机模式的事件:1、NRST引脚复位。 2、看门狗复位。3、WKUP(PA0)引脚产生上升沿电平。4、RTC时钟产生alarm
2----
STM32
的低功耗模式有
3种:
1)睡眠模式(CM3内核停止,外设仍然运行)
2)停止模式(所有时钟都停止)
3)待机(standby)模式(1.8V内核电源关闭)
从待机模式唤醒后的代码执行等同于复位后的执行
进入Standby模式后,只能有Wake-up脚和RTC唤醒,特别是唤醒后,程序将从最开始运行,也就是相当于软件复位。
我这里有一个我以前写的参考代码
void PWR_EnterSTANDBYMode(void)
{
/* Clear Wake-up flag */
PWR->CR |= CR_CWUF_Set;
/* Select STANDBY mode */
PWR->CR |= CR_PDDS_Set;
/* Set SLEEPDEEP bit of Cortex System Control Register */
*(vu32 *) SCB_SysCtrl |= SysCtrl_SLEEPDEEP_Set;
/* Request Wait For Interrupt */
__WFI();
}
/*******************************************************************************
* Function Name : PWR_WakeUpPinCmd
* Description : Enables or disables the WakeUp Pin functionality.
* Input : - NewState: new state of the WakeUp Pin functionality.
* This parameter can be: ENABLE or DISABLE.
* Output : None
* Return : None
*******************************************************************************/
void PWR_WakeUpPinCmd(FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_FUNCTIONAL_STATE(NewState));
*(vu32 *) CSR_EWUP_BB = (u32)NewState;
}
/*******************************************************************************
* Function Name : LowPower_Init
* Description : Initializes Low Power application.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void LowPower_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
/* Enable WakeUp pin */
PWR_WakeUpPinCmd(ENABLE);
/* Enable Clock Security System(CSS) */
RCC_ClockSecuritySystemCmd(ENABLE);
}
PS,进入satandby之前要关闭看门狗,否则看门狗的复位,会导致MCU提前醒来
评分
查看全部评分