Merge remote-tracking branch 'origin/main' into main
This commit is contained in:
commit
4884c32f08
@ -29,21 +29,45 @@
|
|||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "common-hal/alarm/SleepMemory.h"
|
#include "common-hal/alarm/SleepMemory.h"
|
||||||
|
|
||||||
|
#include STM32_HAL_H
|
||||||
|
|
||||||
|
#define STM_BKPSRAM_SIZE 0x1000
|
||||||
|
#define STM_BKPSRAM_START BKPSRAM_BASE
|
||||||
|
|
||||||
|
STATIC bool initialized = false;
|
||||||
|
|
||||||
|
STATIC void lazy_init(void) {
|
||||||
|
if (!initialized) {
|
||||||
|
__HAL_RCC_BKPSRAM_CLK_ENABLE();
|
||||||
|
HAL_PWREx_EnableBkUpReg();
|
||||||
|
HAL_PWR_EnableBkUpAccess();
|
||||||
|
initialized = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void alarm_sleep_memory_reset(void) {
|
void alarm_sleep_memory_reset(void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t common_hal_alarm_sleep_memory_get_length(alarm_sleep_memory_obj_t *self) {
|
uint32_t common_hal_alarm_sleep_memory_get_length(alarm_sleep_memory_obj_t *self) {
|
||||||
mp_raise_NotImplementedError(translate("Sleep Memory not available"));
|
lazy_init();
|
||||||
return 0;
|
return STM_BKPSRAM_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_alarm_sleep_memory_set_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, const uint8_t *values, uint32_t len) {
|
bool common_hal_alarm_sleep_memory_set_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, const uint8_t *values, uint32_t len) {
|
||||||
mp_raise_NotImplementedError(translate("Sleep Memory not available"));
|
if (start_index + len > STM_BKPSRAM_SIZE) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
lazy_init();
|
||||||
|
memcpy((uint8_t *)(STM_BKPSRAM_START + start_index), values, len);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void common_hal_alarm_sleep_memory_get_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, uint8_t *values, uint32_t len) {
|
void common_hal_alarm_sleep_memory_get_bytes(alarm_sleep_memory_obj_t *self, uint32_t start_index, uint8_t *values, uint32_t len) {
|
||||||
mp_raise_NotImplementedError(translate("Sleep Memory not available"));
|
if (start_index + len > STM_BKPSRAM_SIZE) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lazy_init();
|
||||||
|
memcpy(values, (uint8_t *)(STM_BKPSRAM_START + start_index), len);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user