mirror of
https://github.com/andreili/katapult.git
synced 2025-08-23 19:34:06 +02:00
Move canboot specific definitions in board/misc.h to new canboot.h header file. This makes it a little easier to identify differences between canboot code and low-level upstream klipper code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
// Timer based on ARM Cortex-M3/M4 SysTick and DWT logic
|
|
//
|
|
// Copyright (C) 2017-2019 Kevin O'Connor <kevin@koconnor.net>
|
|
//
|
|
// This file may be distributed under the terms of the GNU GPLv3 license.
|
|
|
|
#include "autoconf.h" // CONFIG_CLOCK_FREQ
|
|
#include "armcm_boot.h" // DECL_ARMCM_IRQ
|
|
#include "board/internal.h" // SysTick
|
|
#include "board/irq.h" // irq_disable
|
|
#include "board/misc.h" // timer_from_us
|
|
#include "canboot.h" // timer_setup
|
|
|
|
// Return the number of clock ticks for a given number of microseconds
|
|
uint32_t
|
|
timer_from_us(uint32_t us)
|
|
{
|
|
return us * (CONFIG_CLOCK_FREQ / 1000000);
|
|
}
|
|
|
|
// Return true if time1 is before time2. Always use this function to
|
|
// compare times as regular C comparisons can fail if the counter
|
|
// rolls over.
|
|
uint8_t
|
|
timer_is_before(uint32_t time1, uint32_t time2)
|
|
{
|
|
return (int32_t)(time1 - time2) < 0;
|
|
}
|
|
|
|
|
|
// Return the current time (in absolute clock ticks).
|
|
uint32_t
|
|
timer_read_time(void)
|
|
{
|
|
return DWT->CYCCNT;
|
|
}
|
|
|
|
// Initialize the timer
|
|
void
|
|
timer_setup(void)
|
|
{
|
|
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
|
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
|
}
|