https://www.cnblogs.com/gscw/p/16349577.html
参考上面文章里,设置PB22引脚作为唤醒引脚不能唤醒,但是PA5就可以唤醒,不知哪里设置不对。打算使用PB22既作为boot引脚又能作为唤醒引脚,这样整个系统保留一个按键。
? ? /* 配置唤醒源为 GPIO - PA5 */
? ? GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeIN_PU);
? ? GPIOA_ITModeCfg(GPIO_Pin_5, GPIO_ITMode_FallEdge); // 下降沿唤醒
? ? PFIC_EnableIRQ(GPIO_A_IRQn);
? ? PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE, Long_Delay);
? ? /* 配置唤醒源为 GPIO - PB22 */
? ? GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeIN_PU);
? ? GPIOB_ITModeCfg(GPIO_Pin_22, GPIO_ITMode_FallEdge); // 下降沿唤醒
? ? PFIC_EnableIRQ(GPIO_B_IRQn);
? ? PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE, Long_Delay);
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void GPIOA_IRQHandler(void)
{
? ? GPIOA_ClearITFlagBit(GPIO_Pin_5);
}
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void GPIOB_IRQHandler(void)
{
? ? GPIOB_ClearITFlagBit(GPIO_Pin_8);? ?//清除PB22中断标志,函数会左移14位,所以这里是清除PB8的中断标志
}