STM32教 程上有呀 ,如野火的教程,,配置好中断,只要一条语句即进入睡眠模式,然后由中断唤醒,执行指示灯闪烁程序:主程序如下:
int main(void)
{
/* 配置 led */
LED_GPIO_Config();
/* 配置exti中断 */
EXTI_Key_Config();
/* 配置串口为中断模式 */
USART1_Config();
printf("\r\n 野火ISO-MINI开发板,睡眠实验 \r\n");
while(1)
{
/* wait interrupt */
LED1( ON ); // 亮
Delay(0xFFFFF);
LED1( OFF ); // 灭
LED2( ON ); // 亮
Delay(0xFFFFF);
LED2( OFF ); // 灭
LED3( ON ); // 亮
Delay(0xFFFFF);
LED3( OFF ); // 灭
__WFI(); //进入睡眠模式,等待中断唤醒
}
}
static void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}
这样的电源管理在工程上是十分必要的,建议你用ADC采样电源电压,进入休眠模式后,使用RTC中断定时唤醒,在采样电池电压决定后面工作方式。
STM32教 程上有呀 ,如野火的教程,,配置好中断,只要一条语句即进入睡眠模式,然后由中断唤醒,执行指示灯闪烁程序:主程序如下:
int main(void)
{
/* 配置 led */
LED_GPIO_Config();
/* 配置exti中断 */
EXTI_Key_Config();
/* 配置串口为中断模式 */
USART1_Config();
printf("\r\n 野火ISO-MINI开发板,睡眠实验 \r\n");
while(1)
{
/* wait interrupt */
LED1( ON ); // 亮
Delay(0xFFFFF);
LED1( OFF ); // 灭
LED2( ON ); // 亮
Delay(0xFFFFF);
LED2( OFF ); // 灭
LED3( ON ); // 亮
Delay(0xFFFFF);
LED3( OFF ); // 灭
__WFI(); //进入睡眠模式,等待中断唤醒
}
}
static void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}
PWR_EnterSTOPMode(PWR_Regulator_ON, WR_STOPEntry_WFI); //唤醒后时钟变为内置8MHz,需要重新配置RCC,才能正常运行,否则PLL关闭。
SystemInit();
本文标签:stm32休眠串口唤醒