Уже который день не могу добиться обещанного микропотребления в Stop Mode, устройство есть 160мкА, вместо единиц мкА
в Stanby Mode все нормально
На плате только процессор, и парочка блокирующих конденсаторов, ну и светодиод к земле.
Порты настраивал и на вход и на выход, и с подтяжкой к нулю и просто аналоговый вход, настраивал входа JTAG как положено по даташиту и вообще отключал, но меньше 160мкА ну никак не получить, тактирование всего выключено, сам разъем JTAG отключен физически и плата перезапущена.
помогите , что я забыл выключить ?
Вот вся программа, кроме системных файлов больше ничего нет, генератор MSI, от частоты ничего не зависит.
CODE
void delaynop(int del)
{
while(--del>0) {};
};
int main(void)
{
RCC_ClocksTypeDef RCC_Clocks;
GPIO_InitTypeDef GPIO_InitStructure;
DBGMCU_Config(DBGMCU_SLEEP | DBGMCU_STOP | DBGMCU_STANDBY, DISABLE); // на всякий случай
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); //включаем тактирование
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
GPIO_StructInit(&GPIO_InitStructure); //настраиваем порты светодиода
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Pin = LED1_PIN;
GPIO_Init(LED1_IOPORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Pin = LED2_PIN;
GPIO_Init(LED2_IOPORT, &GPIO_InitStructure);
pinLed1=1;
pinLed2=1;
delaynop(8000000);
pinLed1=0;
pinLed2=0;
GPIO_StructInit(&GPIO_InitStructure); // настраиваем все порты как вход с подтяжкой к нулю
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_400KHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, DISABLE); //выключаем тактирование портов
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, DISABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, DISABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_UltraLowPowerCmd(ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, DISABLE);
PWR_ClearFlag(PWR_FLAG_WU);
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); //засыпаем навсегда
};
Сообщение отредактировал digital - Jul 15 2014, 07:41
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!