Ansersion 发表于 2019-11-21 10:21

F003休眠模式ADC中断不生效

以下两个函数分别是休眠模式和和运行模式启动ADC的函数,休眠模式下每隔15秒启动一次,运行模式每隔100毫秒启动一次,均在SysTick中断中被调用,SLEEP ON EXIT标志使能。休眠模式的系统时钟是32768,运行模式是4M,进入休眠模式前会关闭外设时钟,进入运行模式前会打开外设时钟。
现在的问题是:CheckAdcIrqFlagRunMode可以正常触发ADC中断,但是CheckAdcIrqFlagSleepMode不行

void CheckAdcIrqFlagSleepMode(uint32_t period)
{
ADCPeriod += period;

if(ADCPeriod > ADC_PERIOD_SLEEP_MODE)
{
    Clk_SetPeripheralGate(ClkPeripheralGpio, TRUE);
    Clk_SetPeripheralGate(ClkPeripheralAdcBgr, TRUE);
    ADCPeriod = 0;
    ADCEnableIrq();
    Adc_Start();
}
}

void CheckAdcIrqFlagRunMode(uint32_t period)
{
ADCPeriod += period;

if(ADCPeriod > ADC_PERIOD_RUN_MODE)
{
    ADCPeriod = 0;
    ADCEnableIrq();
    Adc_Start();
}
}
根据用户手册,休眠模式是可以跑ADC

哪位兄弟知道是怎么回事?

martinhu 发表于 2019-11-21 10:31

仅仅看这个是看不出问题在哪,需要知道你进休眠之前做了什么,如果仅仅是关了ADC 的外设时钟,BGR和ADCen不关闭,那么还是会有很大的功耗。你可以看看手册上关于ADC怎么操作。

kane1019 发表于 2019-11-21 14:13


华大一级代理商,有专业FAE支持,有需要技术支持或询价的欢迎加Q8687774详聊

kxsi 发表于 2019-12-16 12:09

中断使能开启了吗

nawu 发表于 2019-12-16 13:05

确定启动adc了吗

qcliu 发表于 2019-12-16 13:09

首先确定adc是否已经运行

MCU57863859 发表于 2019-12-21 08:58

华大代理 可提供技术支持
页: [1]
查看完整版本: F003休眠模式ADC中断不生效