Dffg_ 2022-02-12 00:11 采纳率: 25%
浏览 68

STM32F103 低功耗模式STOP唤醒问题

int main(){
    SysTick_Init(72);
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    LED_Init();
    USART1_Init(9600);
    KEYBOARD_Init();
    My_EXTI_Init();    
    
    while(1)
    {
        printf("5\r\n");
        led1=0;
        delay_ms(1000);
        
        printf("4\r\n");
        led1=1;
        delay_ms(1000);
        
        printf("3\r\n");
        led1=0;
        delay_ms(1000);
        
        printf("2\r\n");
        led1=1;
        delay_ms(1000);
        
        printf("1\r\n");
        led1=0;
        delay_ms(1000);
        
        printf("Stop \r\n");

        Enter_Stop_Mode();
        printf("唤醒成功\r\n");
        
    }
}

主函数在一系列初始化后开始5秒倒数,最后进入stop模式。
使用外部中断(下键)唤醒,唤醒后打印_“唤醒成功”_。

void EXTI3_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line3)==1)
    {
        delay_ms(10);
        if(KEY_DOWN==0)
        {
            USART1_Init(9600);
            printf("唤醒成功\r\n");
        }
    }
    EXTI_ClearITPendingBit(EXTI_Line3);
}

退出stop模式后应该从进入stop模式的代码处继续,但串口调试助手的结果如图:

img

给我的感觉是按一下唤醒一下,这是怎么回事啊?

  • 写回答

1条回答 默认 最新

  • qq_43054949 2022-02-12 20:31
    关注

    按一下进一次中断,然后打印一次。你加一个标志记录当前是否处于休眠状态,休眠了再打印

    评论

报告相同问题?

问题事件

  • 创建了问题 2月12日