46 lines
787 B
C
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
|