Wpis z mikrobloga

Witam Mircy,
Zna się ktoś na programowaniu STM32 i jest w stanie mi pomóc odpowiednio zaprogramować tryb oszczędzania energii by cały układ przechodził w stan niskiego poboru energii i co jakiś czas wybudzał się celem uzyskania zadanych pomiarów? Pierwszy raz mam z tym do czynienia i nie za bardzo wiem jakiego trybu oszczędzania energii użyć i w jaki sposób poprawnie go zaimplementować.
-STM32 Nucleo-F103RB
-Język C

#stm32 #elektronika #programowanie
  • 10
@Elleshar:
int main(void)
{
GPIOInitTypeDef gpio;
ErrorStatus HSEStartUpStatus;

DBGMCU
Config(DBGMCUSTOP, ENABLE);

RCC
APB2PeriphClockCmd(RCCAPB2PeriphGPIOA | RCCAPB2PeriphGPIOB |
RCCAPB2PeriphGPIOC | RCCAPB2PeriphGPIOD |
RCCAPB2PeriphGPIOE, ENABLE);

GPIOStructInit(&gpio);
gpio.GPIO
Pin = GPIOPinAll;
gpio.GPIOMode = GPIOModeAIN;
GPIO
Init(GPIOA, &gpio);
GPIOInit(GPIOB, &gpio);
GPIO
Init(GPIOC, &gpio);
GPIOInit(GPIOD, &gpio);
GPIO
Init(GPIOE, &gpio);

RCCAPB2PeriphClockCmd(RCCAPB2PeriphGPIOA | RCCAPB2PeriphGPIOB
Sprobuj skonfigurowac external interrupt, tylko linia EXTI potrafic wybudzic ze stop mode, moze prosciej uzyc Ci sleep mode, bo po stop mode musisz zegary znowu skonfigurowac jak tutaj (jakis losowy przyklad):
Zobacz na poniższy kod

int main(void)
{
EXTI_InitTypeDef EXTI_InitStructure;

DBGMCU_Config(DBGMCU_STOP, ENABLE);

RCC_Conf();
NVIC_Conf();
GPIO_Conf();

// Linia 17 jako zdarzenie (RTC)
EXTI_StructInit(&EXTI_InitStructure);
EXTI_InitStructure.EXTI_Line = EXTI_Line17;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Event;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

PWR_BackupAccessCmd(ENABLE); // Zezwolenie na dostep do Backup