stm32/mboot: Fix mp_hal_delay_us() and add mp_hal_ticks_ms().

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George 2021-04-28 16:21:38 +10:00
parent fd01b6c779
commit 97f09fda3e

View File

@ -95,6 +95,9 @@
// These bits are used to detect valid application firmware at APPLICATION_ADDR
#define APP_VALIDITY_BITS (0x00000003)
// For 1ms system ticker.
static volatile uint32_t systick_ms;
// Global dfu state
dfu_context_t dfu_context SECTION_NOZERO_BSS;
@ -104,6 +107,10 @@ uint32_t get_le32(const uint8_t *b) {
return b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24;
}
mp_uint_t mp_hal_ticks_ms(void) {
return systick_ms;
}
void mp_hal_delay_us(mp_uint_t usec) {
// use a busy loop for the delay
// sys freq is always a multiple of 2MHz, so division here won't lose precision
@ -113,11 +120,10 @@ void mp_hal_delay_us(mp_uint_t usec) {
const uint32_t ucount = SystemCoreClock / 2000000 * usec / 2;
#endif
for (uint32_t count = 0; ++count <= ucount;) {
__NOP();
}
}
static volatile uint32_t systick_ms;
void mp_hal_delay_ms(mp_uint_t ms) {
if (__get_PRIMASK() == 0) {
// IRQs enabled, use systick