以下两个函数分别是休眠模式和和运行模式启动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
哪位兄弟知道是怎么回事?
|