firmware/stm32/bootloader/delay.c
2020-11-18 14:19:14 -05:00

46 lines
787 B
C

/*
* (c) Copyright 2018 by Coinkite Inc. This file is covered by license found in COPYING-CC.
*
* delay.c -- Software delay loops (we have no interrupts)
*
*/
#include "basics.h"
#include "delay.h"
#include "stm32l4xx_hal.h"
// delay_ms()
//
void
delay_ms(int ms)
{
// Clear the COUNTFLAG and reset value to zero
SysTick->VAL = 0;
//SysTick->CTRL;
// Wait for ticks to happen
while(ms > 0) {
if(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) {
ms--;
}
}
}
// delay_us()
//
void
delay_us(int us)
{
if(us > 1000) {
// big round up
delay_ms((us + 500) / 1000);
} else {
// XXX calibrate this
for(volatile int i=0; i<(10000*us); i++) {
__NOP();
}
}
}
// EOF