请问stm32f302怎么通过检测AD采样的电压低于U1的时候进入睡眠,当高于U2的时候唤醒?

2019-07-14 13:58发布

我想通过检测AD采样的电压低于U1的时候进入睡眠,当高于U2的时候唤醒,求高手指点,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
davidliu9518
2019-07-15 10:49
stop_mode:
#if DEBUG
                                                printf("S M ");
#endif

                                                        RTC_Configuration();
                                                        //PWR_BackupAccessCmd(ENABLE);        //使能RTC和后备寄存器访问                                       
                                                        //RTC_ITConfig(RTC_IT_ALR, ENABLE);
                                                        //RTC_WaitForLastTask();                                       
                                                        //RTC_ClearFlag(RTC_FLAG_SEC);
                                                        //while (RTC_GetFlagStatus(RTC_FLAG_SEC) == RESET);
                                                        //RCC_ClearFlag();










                                                //set the all GPIO as general GPIO 、remap IRDA in EXIT0 and disable TIM4 interrupt
                                                lowLevelGPIOCfg();

                                                ADC_Cmd(ADC1, DISABLE);
                                                DMA_Cmd(DMA1_Channel1, DISABLE);
                                                WireControl_EXTI_Enable();

                                                GPIO_ResetBits(Led_Power, Led_Power_Pin);
                                                //GPIO_SetBits(Led_Power, Led_Power_Pin);

                                                BKP_WriteBackupRegister(BKP_DR3, 0xFFFF);  //设置为睡眠状态
                                                #if DEBUG
                                                GPIO_SetBits(GPS_ON,GPS_ON_Pin);
                                                #endif

                                                //Enter a stop mode
                                                //Request to enter STOP mode with regulator in low power mode, wake by any exit interrupt
                                                IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
                                                IWDG_SetReload(0xffe);
                                                IWDG_ReloadCounter();

                                                GPIO_SetBits(LED_SD1_G, LED_SD1_G_Pin);
                                                GPIO_SetBits(LED_SD2_G, LED_SD2_G_Pin);
                                                GPIO_SetBits(LED_CAM1, LED_CAM1_Pin);
                                                GPIO_SetBits(LED_CAM2, LED_CAM2_Pin);
                                               
                                                mcu_iwdg_flag = 1;
                                                delay_ms(RESET_INTERVAL);

                                            EXTI_ClearITPendingBit(ACC_EXTI_Line |  EXTI_Line0 | EXTI_Line17 | EXTI_Line11);
                                                PWR_EnterSTOPMode(PWR_Regulator_LowPower,
                                                                PWR_STOPEntry_WFI);

                                                GPIO_ResetBits(LED_SD1_G, LED_SD1_G_Pin);
                                                GPIO_ResetBits(LED_SD2_G, LED_SD2_G_Pin);
                                                GPIO_ResetBits(LED_CAM1, LED_CAM1_Pin);
这个是我进入睡眠的代码,
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
这里是进入睡眠的地方,睡眠需要注意的是,睡眠前清理一下中断悬挂
EXTI_ClearITPendingBit(ACC_EXTI_Line |  EXTI_Li.....
,配置好外部中断。
如果睡眠之前有独立看门狗的话,需要另外的处理。

一周热门 更多>