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

2019-07-14 13:58发布

我想通过检测AD采样的电压低于U1的时候进入睡眠,当高于U2的时候唤醒,求高手指点,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
leilijiao
2019-07-15 09:54
davidliu9518 发表于 2019-2-27 09:28
这里只是中断服务函数,中断服务函数里面,仅仅读取电压(DMA会循环把ADC寄存器的数据扫到内存变量里),处理几个全局的标志而已,主程序里面会对这些标志进行判断,然后才进行相应的处理(比如休眠等等);至于多长时间置标志位,这个你可以自行设定,计时我是用的定时器累加实现计时的。差不多低于阀值300ms就会置标志位 ...

谢谢你的回复,我明白你的意思,但是我现在的问题是调用进入睡眠的库函数就是进不到睡眠,请问你的主程序中进入睡眠是怎么进去的吗?我的进入睡眠的代码如下:
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
                PWR_DeInit();
                PWR_BackupAccessCmd(DISABLE);
                SCB->SCR &= 0xFFFFFFF0;
        //        SCB->SCR &= ~((uint32_t)SCB_SCR_SLEEPDEEP_Msk);
                NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,DISABLE);
                NVIC_SystemLPConfig(NVIC_LP_SLEEPONEXIT,DISABLE);
                PWR_EnterSleepMode(PWR_SLEEPEntry_WFE);
        //        __WFE;
不知道那里出问题了,就是进不了睡眠。求帮忙指点,谢谢!

一周热门 更多>