teastan0 0 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Здравствуйте, есть программа на Arduino(беспроводной температурный датчик). Из-за большого потребления Arduino решено перейти на STM32l151cb. STM32duino (GIT)успешно настроил на работу со своей программой, но не могу понять как правильно включить low pover run mode ну или stand by , чтобы он просыпался по RTC таймеру (Alarm x). Получается, что нужно на HAL все сконфигурировать, а то что я нахожу используется на F версии. Может кто может помочь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Может кто может помочь? Может конечно, мануал всё может :) http://www.st.com/resource/en/reference_ma.../cd00240193.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 23 января, 2018 Опубликовано 23 января, 2018 · Жалоба Даже названия есть для этого HAL_PWR_EnterSLEEPMode HAL_PWR_EnterSTOPMode HAL_PWR_EnterSTANDBYMode и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
teastan0 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба А как сконфигурировать Alarm A? Может у кого примеры есть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба А как сконфигурировать 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(); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
teastan0 0 24 января, 2018 Опубликовано 24 января, 2018 · Жалоба Совсем народ обленился :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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться