论坛元老
 
- 积分
- 7136
- 金钱
- 7136
- 注册时间
- 2015-1-23
- 在线时间
- 105 小时
|
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_ADC1_Init();
MX_SPI1_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
MX_IWDG_Init();
MX_TIM2_Init();
MX_RTC_Init();
MX_USB_DEVICE_Init();
GPIO_InitTypeDef GPIO_InitStruct;
// __HAL_RCC_APB2_FORCE_RESET(); //复位所有IO口
__HAL_RCC_BKP_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
HAL_PWR_EnableWakeUpPin (PWR_WAKEUP_PIN1);
HAL_PWR_EnterSTANDBYMode();
生成代码后, 先调试的待机模式, 用PA0唤醒. 结果就是不成功, 查了很多地方也没用, 最后把所有外设初始化全部注释, 再试,竟然成功了, 继续查发现只需要注释掉MX_IWDG_Init();就行. 然后开启MX_IWDG_Init()仿真进入这个函数, 发现如果不启动IWDG,他的SR状态寄存器一直是0x03, 也就是重装载值的更新正在进行中, 直到HAL_IWDG_Start(&hiwdg); //启动独立看门狗, SR状态寄存器才是0x00, 这个时候再用PA0唤醒就可以.
总结一下, 进入待机模式很简单,就上面几条语句. 但IWDG的SR为ox03会影响PA0唤醒,确实让我想不到.
|
|