Может кто подскажет? Ковыряю режимы пониженного энергопотребления. В общем, потребление какое-то странное у контроллера. В обычном режиме потребление примерно 8.5 мА, что уже кстати перебор, так как в даташите написано
Sleep mode 7.7 мА
Stop mode и StandBy mode одинаково по 6.17 мА
С ножками делал разные манипуляции. Ничего не помогает
Код: Выделить всё
void Gpio_Disable()
{
GPIO_InitTypeDef GpioStructure;
// Clocks for GPIO
RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH , ENABLE );
//
GpioStructure.GPIO_Pin = GPIO_Pin_All;
GpioStructure.GPIO_Mode = GPIO_Mode_AIN; // GPIO_Mode_IN GPIO_Mode_AN
GpioStructure.GPIO_Speed = GPIO_Speed_400KHz ; //GPIO_Speed_400KHz
GpioStructure.GPIO_OType = GPIO_OType_PP;
GpioStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //GPIO_PuPd_DOWN GPIO_PuPd_NOPULL
GPIO_Init(GPIOA, &GpioStructure);
GPIO_Init(GPIOB, &GpioStructure);
GPIO_Init(GPIOC, &GpioStructure);
GPIO_Init(GPIOD, &GpioStructure);
GPIO_Init(GPIOE, &GpioStructure);
GPIO_Init(GPIOH, &GpioStructure);
/*
// PB7 - PVD_IN
GpioStructure.GPIO_Pin = GPIO_Pin_7;
GpioStructure.GPIO_Mode = GPIO_Mode_OUT; // GPIO_Mode_IN
GpioStructure.GPIO_Speed = GPIO_Speed_40MHz;
GpioStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_ResetBits(GPIOB, GPIO_Pin_7);
GPIO_Init(GPIOB, &GpioStructure);
*/
RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE | RCC_AHBPeriph_GPIOH , DISABLE );
}
Вот кусочек кода закомменченный. Просто раньше потребление как-то реагировало, когда изменял настройки этой ножки PVD_IN детектора напряжения.
Всё, что подведено к ножкам контроллера, отпаял. Абсолютно всё. Подходит только питание. Плата кстати не отладочная, своя. Когда отпаял резистор, который подтягивал к нулю ножку BOOT0, то вне зависимости от того в каком режиме работает контроллер (Run, Sleep, Stop, Standby), потребление составляет примерно 10.5 мА. Понятно, что тогда программа может стартонуть не оттуда откуда надо, так что не стал заморачиваться с BOOT0 и просто припаял обратно
Ну сам код тут в общем-то почти ничего нет
Код: Выделить всё
int main()
{
Gpio_Disable();
//PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
//PWR_EnterSTANDBYMode();
//PWR_EnterSleepMode(PWR_Regulator_LowPower, PWR_SLEEPEntry_WFI);
while(1);
}
Проектом этим уже год не занимался, времени не было, так что мог что-то забыть и упустить. Кто чем может, поможите:)
Заранее спасибо
