30 lines
637 B
C
30 lines
637 B
C
|
#include "shorttimer.h"
|
||
|
|
||
|
#include "stm32h7xx_hal.h"
|
||
|
#include "stm32h7xx_hal_tim.h"
|
||
|
#include <stdint.h>
|
||
|
|
||
|
static TIM_HandleTypeDef *htim;
|
||
|
static uint32_t ticks;
|
||
|
|
||
|
void shorttimer_init(TIM_HandleTypeDef *handle) {
|
||
|
htim = handle;
|
||
|
ticks = 0;
|
||
|
HAL_TIM_Base_Start_IT(htim);
|
||
|
}
|
||
|
|
||
|
uint32_t shorttimer_gettick(void) { return ticks; }
|
||
|
|
||
|
void shorttimer_sleep(uint32_t microseconds) {
|
||
|
volatile uint32_t start = shorttimer_gettick();
|
||
|
// Add another tick to guarantee a minimum wait
|
||
|
if (microseconds < UINT32_MAX) {
|
||
|
microseconds++;
|
||
|
}
|
||
|
|
||
|
while (shorttimer_gettick() - start < microseconds) {
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void shorttimer_callback() { ticks++; }
|