Цитата(spasbyspas @ May 22 2012, 16:44)

Стадии разработке JTAG контакты должны бы не следует менять и специально в токой режиме.
В общем, то есть проблема с программированием новой версии программа через JTAG и в частности SWD в "STANDBY mode".
Эти два предложения совсем не понял...
В общем, делаю вот так, сразу после запуска , т.е. периферия выключена.
__WFI(); можно и не в цикле , т.к. никаких прерываний нет , проверял.
На двух подтягивающих резисторах 10К jtag обнаружил напряжение 0.17в и отпаял их. Без резисторов напряжение стало 0.54.
При делителе AHB=1
С __WFI(); получаю ток 19мкА
Если __WFI(); вообще нет , и программа крутится в while(1){}, получаю ток 32мкА
При делителе AHB=512
С __WFI(); 19мкА
Без __WFI(); 25мкА
При этом всём нога VDDA потребляет ~1 мкА
Вопрос : как ещё снизить ток ? Чего я ещё забыл выключить ?
Код
RCC->CFGR &=~RCC_CFGR_SW; //Выбрали System clock MSI
RCC->CR &= ~RCC_CR_HSION; //вЫключили генератор HSI
RCC->ICSCR&=~RCC_ICSCR_MSIRANGE;
RCC->ICSCR|=RCC_ICSCR_MSIRANGE_64KHz; //частота MSI 64 KHZ
RCC->CR &=~RCC_CR_HSEON; //выключили генератор HSE , сразу после включения МК он почеу-то портебляет 1.5мА
PWR->CR |= PWR_CR_LPSDSR; //при входе в спящий режим переводим встроеный стабилизатор в режим малого портебления
PWR->CR |= PWR_CR_LPRUN; //Voltage regulator in low power mode in Low power run mode
PWR->CR |= PWR_CR_ULP; //Внутренний источник опорного напряжения отключен в спящем режиме
/////////////// RCC->CFGR |=RCC_CFGR_HPRE_DIV512; //делитель AHB 512
SCB->SCR&=~SCB_SCR_SLEEPONEXIT; // не дожидаемся окончания выхода из прерывания перед входом в спящий режим
RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN |RCC_AHBENR_GPIOHEN; //включили тактирование портов
GPIOA->PUPDR=0;
GPIOB->PUPDR=0;
GPIOC->PUPDR=0;
GPIOH->PUPDR=0; //выключили подтягивающие резисторы
GPIOA->MODER=0xFFFFFFFF;
GPIOB->MODER=0xFFFFFFFF;
GPIOC->MODER=0xFFFFFFFF;
GPIOH->MODER=0xFFFFFFFF; //сделали все порты аналоговыми
RCC->AHBENR &= ~(RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN |RCC_AHBENR_GPIOHEN); //вЫключили тактирование портов
while(1)
{
__WFI(); //заснули
}