summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2022-06-09 12:20:42 +1000
committerDamien George <damien@micropython.org>2022-06-09 13:24:08 +1000
commitbd5152c928a4a0809eaa340e0f8ae788a949daea (patch)
tree6f50beff0033ad56f2f21da77017c79ce43135fc
parent313f082896bbf969dd91497151419efa6c42c148 (diff)
stm32/mboot: Add board-configurable SysTick hook.
Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--ports/stm32/mboot/main.c4
-rw-r--r--ports/stm32/mboot/mboot.h6
-rw-r--r--ports/stm32/mboot/ui.c2
3 files changed, 8 insertions, 4 deletions
diff --git a/ports/stm32/mboot/main.c b/ports/stm32/mboot/main.c
index 8bd5e86fe..734c6a3b7 100644
--- a/ports/stm32/mboot/main.c
+++ b/ports/stm32/mboot/main.c
@@ -1518,9 +1518,9 @@ void SysTick_Handler(void) {
// work properly.
SysTick->CTRL;
- // Update the LED0 state from here to ensure it's consistent regardless of
+ // Run any board-specific code that needs to be done regardless of
// other processing going on in interrupts or main.
- led0_update();
+ MBOOT_BOARD_SYSTICK();
}
#if defined(MBOOT_I2C_SCL)
diff --git a/ports/stm32/mboot/mboot.h b/ports/stm32/mboot/mboot.h
index 9f4781153..208a80d57 100644
--- a/ports/stm32/mboot/mboot.h
+++ b/ports/stm32/mboot/mboot.h
@@ -54,6 +54,10 @@
#define MBOOT_BOARD_STATE_CHANGE(state, arg) mboot_state_change_default((state), (arg))
#endif
+#ifndef MBOOT_BOARD_SYSTICK
+#define MBOOT_BOARD_SYSTICK() mboot_ui_systick()
+#endif
+
#ifndef MBOOT_ADDRESS_SPACE_64BIT
#define MBOOT_ADDRESS_SPACE_64BIT (0)
#endif
@@ -148,7 +152,7 @@ extern uint8_t _estack[ELEM_DATA_SIZE];
void systick_init(void);
void led_init(void);
-void led0_update(void);
+void mboot_ui_systick(void);
void SystemClock_Config(void);
uint32_t get_le32(const uint8_t *b);
diff --git a/ports/stm32/mboot/ui.c b/ports/stm32/mboot/ui.c
index db1bcc8b7..9924ecd0b 100644
--- a/ports/stm32/mboot/ui.c
+++ b/ports/stm32/mboot/ui.c
@@ -122,7 +122,7 @@ void led0_state(led0_state_t state) {
}
}
-void led0_update(void) {
+void mboot_ui_systick(void) {
if (led0_cur_state != LED0_STATE_OFF && systick_ms - led0_ms_interval > 50) {
uint8_t rate = (led0_cur_state >> 2) & 0x1f;
led0_ms_interval += 50;