Перейти к содержанию
    

Low Power в STM32duino STM32L1

Здравствуйте, есть программа на Arduino(беспроводной температурный датчик). Из-за большого потребления Arduino решено перейти на STM32l151cb.

STM32duino (GIT)успешно настроил на работу со своей программой, но не могу понять как правильно включить low pover run mode ну или stand by , чтобы он просыпался по RTC таймеру (Alarm x). Получается, что нужно на HAL все сконфигурировать, а то что я нахожу используется на F версии.

 

Может кто может помочь? :wacko:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может кто может помочь? :wacko:

Может конечно, мануал всё может :) http://www.st.com/resource/en/reference_ma.../cd00240193.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Даже названия есть для этого

HAL_PWR_EnterSLEEPMode

HAL_PWR_EnterSTOPMode

HAL_PWR_EnterSTANDBYMode

и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как сконфигурировать Alarm A? Может у кого примеры есть?

Совсем народ обленился :rolleyes:

 

    
void AlarmTest(void) {

   HAL_RTC_GetTime(&RTCHandle, &RTC_TimeStructure, RTC_FORMAT_BIN);
   HAL_RTC_GetDate(&RTCHandle, &RTC_DateStructure, RTC_FORMAT_BIN);

   /* Set the alarm to current time + 5s */
   RTC_AlarmStructure.Alarm  = RTC_ALARM_A;
   RTC_AlarmStructure.AlarmTime.TimeFormat = RTC_TimeStructure.TimeFormat;
   RTC_AlarmStructure.AlarmTime.Hours = RTC_TimeStructure.Hours;
   RTC_AlarmStructure.AlarmTime.Minutes = RTC_TimeStructure.Minutes;
   RTC_AlarmStructure.AlarmTime.Seconds = (RTC_TimeStructure.Seconds + 5) % 60;
   RTC_AlarmStructure.AlarmDateWeekDay = 31;
   RTC_AlarmStructure.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
   RTC_AlarmStructure.AlarmMask = RTC_ALARMMASK_DATEWEEKDAY | RTC_ALARMMASK_HOURS | RTC_ALARMMASK_MINUTES;
   RTC_AlarmStructure.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_NONE;
   if (HAL_RTC_SetAlarm_IT(&RTCHandle, &RTC_AlarmStructure, RTC_FORMAT_BIN) != HAL_OK)
   {
     /* Initialization Error */
     Error_Handler();
   }

   /* Disable all used wakeup sources: WKUP pin */
   HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);

   /* Clear all related wakeup flags */
   /* Clear PWR wake up Flag */
   __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

   /* Enable WKUP pin */
   HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);

   /* Request to enter STANDBY mode */
   HAL_PWR_EnterSTANDBYMode();
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Совсем народ обленился :rolleyes:

 

    
void AlarmTest(void) {

   HAL_RTC_GetTime(&RTCHandle, &RTC_TimeStructure, RTC_FORMAT_BIN);
   HAL_RTC_GetDate(&RTCHandle, &RTC_DateStructure, RTC_FORMAT_BIN);

   /* Set the alarm to current time + 5s */
   RTC_AlarmStructure.Alarm  = RTC_ALARM_A;
   RTC_AlarmStructure.AlarmTime.TimeFormat = RTC_TimeStructure.TimeFormat;
   RTC_AlarmStructure.AlarmTime.Hours = RTC_TimeStructure.Hours;
   RTC_AlarmStructure.AlarmTime.Minutes = RTC_TimeStructure.Minutes;
   RTC_AlarmStructure.AlarmTime.Seconds = (RTC_TimeStructure.Seconds + 5) % 60;
   RTC_AlarmStructure.AlarmDateWeekDay = 31;
   RTC_AlarmStructure.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
   RTC_AlarmStructure.AlarmMask = RTC_ALARMMASK_DATEWEEKDAY | RTC_ALARMMASK_HOURS | RTC_ALARMMASK_MINUTES;
   RTC_AlarmStructure.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_NONE;
   if (HAL_RTC_SetAlarm_IT(&RTCHandle, &RTC_AlarmStructure, RTC_FORMAT_BIN) != HAL_OK)
   {
     /* Initialization Error */
     Error_Handler();
   }

   /* Disable all used wakeup sources: WKUP pin */
   HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);

   /* Clear all related wakeup flags */
   /* Clear PWR wake up Flag */
   __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);

   /* Enable WKUP pin */
   HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);

   /* Request to enter STANDBY mode */
   HAL_PWR_EnterSTANDBYMode();
}

 

 

А можно, пожалуйста, весь код?) :laughing:

 

А может кто-нибудь делал это в STM32duino? А то не очень понятно, куда правильно его внедрить. :smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...