|
|
|
@ -92,14 +92,12 @@
|
|
|
|
|
#define portNVIC_SYSTICK_CTRL_REG ( * ( ( volatile unsigned long * ) 0xe000e010 ) )
|
|
|
|
|
#define portNVIC_SYSTICK_LOAD_REG ( * ( ( volatile unsigned long * ) 0xe000e014 ) )
|
|
|
|
|
#define portNVIC_SYSTICK_CURRENT_VALUE_REG ( * ( ( volatile unsigned long * ) 0xe000e018 ) )
|
|
|
|
|
#define portNVIC_INT_CTRL_REG ( * ( ( volatile unsigned long * ) 0xe000ed04 ) )
|
|
|
|
|
#define portNVIC_SYSPRI2_REG ( * ( ( volatile unsigned long * ) 0xe000ed20 ) )
|
|
|
|
|
/* ...then bits in the registers. */
|
|
|
|
|
#define portNVIC_SYSTICK_CLK_BIT ( 1UL << 2UL )
|
|
|
|
|
#define portNVIC_SYSTICK_INT_BIT ( 1UL << 1UL )
|
|
|
|
|
#define portNVIC_SYSTICK_ENABLE_BIT ( 1UL << 0UL )
|
|
|
|
|
#define portNVIC_SYSTICK_COUNT_FLAG_BIT ( 1UL << 16UL )
|
|
|
|
|
#define portNVIC_PENDSVSET_BIT ( 1UL << 28UL )
|
|
|
|
|
#define portNVIC_PENDSVCLEAR_BIT ( 1UL << 27UL )
|
|
|
|
|
#define portNVIC_PEND_SYSTICK_CLEAR_BIT ( 1UL << 25UL )
|
|
|
|
|
|
|
|
|
@ -279,10 +277,15 @@ void vPortEndScheduler( void )
|
|
|
|
|
}
|
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
void vPortYieldFromISR( void )
|
|
|
|
|
void vPortYield( void )
|
|
|
|
|
{
|
|
|
|
|
/* Set a PendSV to request a context switch. */
|
|
|
|
|
portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;
|
|
|
|
|
|
|
|
|
|
/* Barriers are normally not required but do ensure the code is completely
|
|
|
|
|
within the specified behaviour for the architecture. */
|
|
|
|
|
__asm volatile( "dsb" );
|
|
|
|
|
__asm volatile( "isb" );
|
|
|
|
|
}
|
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
@ -290,6 +293,8 @@ void vPortEnterCritical( void )
|
|
|
|
|
{
|
|
|
|
|
portDISABLE_INTERRUPTS();
|
|
|
|
|
uxCriticalNesting++;
|
|
|
|
|
__asm volatile( "dsb" );
|
|
|
|
|
__asm volatile( "isb" );
|
|
|
|
|
}
|
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
@ -473,6 +478,8 @@ void xPortSysTickHandler( void )
|
|
|
|
|
if( xModifiableIdleTime > 0 )
|
|
|
|
|
{
|
|
|
|
|
__asm volatile( "wfi" );
|
|
|
|
|
__asm volatile( "dsb" );
|
|
|
|
|
__asm volatile( "isb" );
|
|
|
|
|
}
|
|
|
|
|
configPOST_SLEEP_PROCESSING( xExpectedIdleTime );
|
|
|
|
|
|
|
|
|
|