mirror of https://github.com/ARMmbed/mbed-os.git
LPC55S69: Add a ctimer for usticker to be used in the secure domain
CTIMER 0 is used for the secure domain and CTIMER 1 is used for the non-secure domain Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>pull/9910/head
parent
66eb3deca8
commit
616fa49890
|
@ -18,6 +18,14 @@
|
|||
#include "fsl_ctimer.h"
|
||||
#include "PeripheralNames.h"
|
||||
|
||||
#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
|
||||
#define CTIMER CTIMER0
|
||||
#define CTIMER_IRQn CTIMER0_IRQn
|
||||
#else
|
||||
#define CTIMER CTIMER1
|
||||
#define CTIMER_IRQn CTIMER1_IRQn
|
||||
#endif
|
||||
|
||||
const ticker_info_t* us_ticker_get_info()
|
||||
{
|
||||
static const ticker_info_t info = {
|
||||
|
@ -47,13 +55,13 @@ void us_ticker_init(void) {
|
|||
|
||||
CTIMER_GetDefaultConfig(&config);
|
||||
config.prescale = prescale - 1;
|
||||
CTIMER_Init(CTIMER1, &config);
|
||||
CTIMER_Reset(CTIMER1);
|
||||
CTIMER_StartTimer(CTIMER1);
|
||||
CTIMER_Init(CTIMER, &config);
|
||||
CTIMER_Reset(CTIMER);
|
||||
CTIMER_StartTimer(CTIMER);
|
||||
}
|
||||
NVIC_SetVector(CTIMER1_IRQn, (uint32_t)us_ticker_irq_handler);
|
||||
NVIC_EnableIRQ(CTIMER1_IRQn);
|
||||
CTIMER1->MCR &= ~1;
|
||||
NVIC_SetVector(CTIMER_IRQn, (uint32_t)us_ticker_irq_handler);
|
||||
NVIC_EnableIRQ(CTIMER_IRQn);
|
||||
CTIMER->MCR &= ~1;
|
||||
|
||||
us_ticker_inited = true;
|
||||
}
|
||||
|
@ -63,7 +71,7 @@ void us_ticker_init(void) {
|
|||
* @return The current timer's counter value in ticks
|
||||
*/
|
||||
uint32_t us_ticker_read(void) {
|
||||
return CTIMER1->TC;
|
||||
return CTIMER->TC;
|
||||
}
|
||||
|
||||
/** Set interrupt for specified timestamp
|
||||
|
@ -80,32 +88,32 @@ void us_ticker_set_interrupt(timestamp_t timestamp) {
|
|||
matchConfig.outPinInitState = true;
|
||||
matchConfig.enableInterrupt = true;
|
||||
|
||||
CTIMER_SetupMatch(CTIMER1, kCTIMER_Match_0, &matchConfig);
|
||||
CTIMER_SetupMatch(CTIMER, kCTIMER_Match_0, &matchConfig);
|
||||
}
|
||||
|
||||
/** Disable us ticker interrupt
|
||||
*
|
||||
*/
|
||||
void us_ticker_disable_interrupt(void) {
|
||||
CTIMER1->MCR &= ~1;
|
||||
CTIMER->MCR &= ~1;
|
||||
}
|
||||
|
||||
/** Clear us ticker interrupt
|
||||
*
|
||||
*/
|
||||
void us_ticker_clear_interrupt(void) {
|
||||
CTIMER1->IR = 1;
|
||||
CTIMER->IR = 1;
|
||||
}
|
||||
|
||||
void us_ticker_fire_interrupt(void)
|
||||
{
|
||||
NVIC_SetPendingIRQ(CTIMER1_IRQn);
|
||||
NVIC_SetPendingIRQ(CTIMER_IRQn);
|
||||
}
|
||||
|
||||
void us_ticker_free(void)
|
||||
{
|
||||
CTIMER_StopTimer(CTIMER1);
|
||||
CTIMER1->MCR &= ~1;
|
||||
NVIC_DisableIRQ(CTIMER1_IRQn);
|
||||
CTIMER_StopTimer(CTIMER);
|
||||
CTIMER->MCR &= ~1;
|
||||
NVIC_DisableIRQ(CTIMER_IRQn);
|
||||
us_ticker_inited = false;
|
||||
}
|
||||
|
|
|
@ -35,9 +35,15 @@ void rtc_setup_oscillator(void)
|
|||
|
||||
uint32_t us_ticker_get_clock()
|
||||
{
|
||||
#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
|
||||
/* Use 12 MHz clock us ticker timer */
|
||||
CLOCK_AttachClk(kFRO_HF_to_CTIMER0);
|
||||
return CLOCK_GetFreq(kCLOCK_CTmier0);;
|
||||
#else
|
||||
/* Use 12 MHz clock us ticker timer */
|
||||
CLOCK_AttachClk(kFRO_HF_to_CTIMER1);
|
||||
return CLOCK_GetFreq(kCLOCK_CTmier1);;
|
||||
#endif
|
||||
}
|
||||
|
||||
void sdio_clock_setup(void)
|
||||
|
|
Loading…
Reference in New Issue