43 #if (defined(CHIP_LPC43XX) && defined(CORE_M0))
49 #define portNVIC_PENDSVSET 0x10000000
50 #ifndef portNVIC_INT_CTRL
51 #define portNVIC_INT_CTRL ((volatile unsigned long *) 0xe000ed04)
53 #define portMIN_INTERRUPT_PRIORITY (255UL)
54 #define portNVIC_SYSTICK_PRI portMIN_INTERRUPT_PRIORITY
56 #define RITENCLR (1 << 1)
57 #define RITINT (1 << 0)
60 static uint32_t reload_val;
67 extern BaseType_t xTaskIncrementTick(
void);
82 void RIT_IRQHandler(
void)
84 unsigned long ulPreviousMask;
87 Chip_RIT_ClearInt(LPC_RITIMER);
88 Chip_RIT_SetCOMPVAL(LPC_RITIMER, Chip_RIT_GetCounter(LPC_RITIMER) + reload_val);
90 #if configUSE_PREEMPTION == 1
92 *(portNVIC_INT_CTRL) = portNVIC_PENDSVSET;
95 ulPreviousMask = portSET_INTERRUPT_MASK_FROM_ISR();
98 if( xTaskIncrementTick() != pdFALSE )
101 *(portNVIC_INT_CTRL) = portNVIC_PENDSVSET;
104 portCLEAR_INTERRUPT_MASK_FROM_ISR( ulPreviousMask );
113 void ritimer_setup(
void)
116 Chip_RIT_ClearInt(LPC_RITIMER);
119 reload_val = (configCPU_CLOCK_HZ / configTICK_RATE_HZ);
120 Chip_RIT_SetCOMPVAL(LPC_RITIMER, Chip_RIT_GetCounter(LPC_RITIMER) + reload_val);
123 NVIC_SetPriority((
IRQn_Type) RITIMER_IRQn, portNVIC_SYSTICK_PRI);
124 NVIC_EnableIRQ((
IRQn_Type) RITIMER_IRQn);