реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Low Power в STM32duino STM32L1
teastan0
сообщение Jan 23 2018, 07:13
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 23-01-18
Пользователь №: 101 207



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

Может кто может помочь? wacko.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 23 2018, 12:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



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

Может конечно, мануал всё может sm.gif http://www.st.com/resource/en/reference_ma.../cd00240193.pdf
Go to the top of the page
 
+Quote Post
x893
сообщение Jan 23 2018, 15:28
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Даже названия есть для этого
HAL_PWR_EnterSLEEPMode
HAL_PWR_EnterSTOPMode
HAL_PWR_EnterSTANDBYMode
и т.д.
Go to the top of the page
 
+Quote Post
teastan0
сообщение Jan 24 2018, 05:26
Сообщение #4





Группа: Новичок
Сообщений: 3
Регистрация: 23-01-18
Пользователь №: 101 207



А как сконфигурировать Alarm A? Может у кого примеры есть?
Go to the top of the page
 
+Quote Post
Integro
сообщение Jan 24 2018, 07:47
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460



Цитата(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();
}
Go to the top of the page
 
+Quote Post
teastan0
сообщение Jan 24 2018, 13:25
Сообщение #6





Группа: Новичок
Сообщений: 3
Регистрация: 23-01-18
Пользователь №: 101 207



Цитата(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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 04:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.02121 секунд с 7
ELECTRONIX ©2004-2016