Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Low Power в STM32duino STM32L1
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
teastan0
Здравствуйте, есть программа на Arduino(беспроводной температурный датчик). Из-за большого потребления Arduino решено перейти на STM32l151cb.
STM32duino (GIT)успешно настроил на работу со своей программой, но не могу понять как правильно включить low pover run mode ну или stand by , чтобы он просыпался по RTC таймеру (Alarm x). Получается, что нужно на HAL все сконфигурировать, а то что я нахожу используется на F версии.

Может кто может помочь? wacko.gif
jcxz
Цитата(teastan0 @ Jan 23 2018, 09:13) *
Может кто может помочь? wacko.gif

Может конечно, мануал всё может sm.gif http://www.st.com/resource/en/reference_ma.../cd00240193.pdf
x893
Даже названия есть для этого
HAL_PWR_EnterSLEEPMode
HAL_PWR_EnterSTOPMode
HAL_PWR_EnterSTANDBYMode
и т.д.
teastan0
А как сконфигурировать Alarm A? Может у кого примеры есть?
Integro
Цитата(teastan0 @ Jan 24 2018, 08:26) *
А как сконфигурировать Alarm A? Может у кого примеры есть?

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

CODE

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();
}
teastan0
Цитата(Integro @ Jan 24 2018, 12:47) *
Совсем народ обленился rolleyes.gif

CODE

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.gif

А может кто-нибудь делал это в STM32duino? А то не очень понятно, куда правильно его внедрить. smile3046.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.