dev/irq #8

Merged
tkl merged 6 commits from dev/irq into master 2020-04-09 08:05:33 +00:00
3 changed files with 64 additions and 0 deletions
Showing only changes of commit 6e7b955d71 - Show all commits

View File

@ -3,6 +3,11 @@
APPLICATION ?= blinky APPLICATION ?= blinky
PLATFORM ?= nrf52 PLATFORM ?= nrf52
ifneq "$(findstring $(PLATFORM), nrf52)" ""
CORE = cm4
endif
TARGET_FILE ?= $(APPLICATION).elf TARGET_FILE ?= $(APPLICATION).elf
CC = $(CROSS_COMPILE)gcc CC = $(CROSS_COMPILE)gcc
@ -25,6 +30,7 @@ C_SRCS += $(wildcard $(SRC_DIR)/application/$(APPLICATION)/*.c)
C_OBJS = $(patsubst $(SRC_DIR)%,$(OBJ_DIR)%,$(patsubst %.c,%.c.o,$(C_SRCS))) C_OBJS = $(patsubst $(SRC_DIR)%,$(OBJ_DIR)%,$(patsubst %.c,%.c.o,$(C_SRCS)))
CC_SRCS = $(wildcard $(SRC_DIR)/*.cc) CC_SRCS = $(wildcard $(SRC_DIR)/*.cc)
CC_SRCS += $(wildcard $(SRC_DIR)/platform/$(CORE)/*.cc)
CC_SRCS += $(wildcard $(SRC_DIR)/platform/$(PLATFORM)/*.cc) CC_SRCS += $(wildcard $(SRC_DIR)/platform/$(PLATFORM)/*.cc)
CC_SRCS += $(wildcard $(SRC_DIR)/application/$(APPLICATION)/*.cc) CC_SRCS += $(wildcard $(SRC_DIR)/application/$(APPLICATION)/*.cc)
CC_OBJS = $(patsubst $(SRC_DIR)%,$(OBJ_DIR)%,$(patsubst %.cc,%.cc.o,$(CC_SRCS))) CC_OBJS = $(patsubst $(SRC_DIR)%,$(OBJ_DIR)%,$(patsubst %.cc,%.cc.o,$(CC_SRCS)))

View 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;
}

View 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