Add SysTick handler
This commit is contained in:
35
src/platform/cm4/SystemTick.cc
Normal file
35
src/platform/cm4/SystemTick.cc
Normal file
@@ -0,0 +1,35 @@
|
||||
extern "C" {
|
||||
#include "nrf52.h"
|
||||
}
|
||||
|
||||
#include "platform/cm4/SystemTick.h"
|
||||
#include "platform/nrf52/InterruptGuardian.h"
|
||||
|
||||
using namespace pinetime::platform::cm4;
|
||||
using namespace pinetime::platform::nrf52;
|
||||
|
||||
SystemTick::SystemTick()
|
||||
: InterruptHandler(InterruptGuardian::Nrf52IrqN::SYS_TICK_IRQ)
|
||||
, sys_tick(0)
|
||||
{
|
||||
}
|
||||
|
||||
void SystemTick::handle()
|
||||
{
|
||||
this->sys_tick++;
|
||||
}
|
||||
|
||||
void SystemTick::enable()
|
||||
{
|
||||
SysTick_Config(SystemCoreClock / 1000);
|
||||
}
|
||||
|
||||
void SystemTick::disable()
|
||||
{
|
||||
SysTick->CTRL = 0;
|
||||
}
|
||||
|
||||
uint32_t SystemTick::tick()
|
||||
{
|
||||
return this->sys_tick;
|
||||
}
|
23
src/platform/cm4/SystemTick.h
Normal file
23
src/platform/cm4/SystemTick.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef __PLATFORM_CM4_SYSTEMTICK_H__
|
||||
#define __PLATFORM_CM4_SYSTEMTICK_H__
|
||||
|
||||
#include "platform/nrf52/InterruptHandler.h"
|
||||
|
||||
namespace pinetime::platform::cm4 {
|
||||
|
||||
class SystemTick : public pinetime::platform::nrf52::InterruptHandler
|
||||
{
|
||||
public:
|
||||
SystemTick();
|
||||
void handle();
|
||||
void enable();
|
||||
void disable();
|
||||
uint32_t tick();
|
||||
|
||||
private:
|
||||
uint32_t sys_tick;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user