*/\r
void AST_ALARM_Handler(void);\r
\r
-/* \r
+/*\r
* Functions that disable and enable the AST respectively, not returning until\r
* the operation is known to have taken effect.\r
*/\r
tick. */\r
void AST_ALARM_Handler(void)\r
{\r
- /* If using preemption, also force a context switch by pending the PendSV\r
- interrupt. */\r
- #if configUSE_PREEMPTION == 1\r
- {\r
- portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\r
- }\r
- #endif\r
-\r
/* Protect incrementing the tick with an interrupt safe critical section. */\r
( void ) portSET_INTERRUPT_MASK_FROM_ISR();\r
{\r
- vTaskIncrementTick();\r
+ if( xTaskIncrementTick() != pdFALSE )\r
+ {\r
+ portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;\r
+ }\r
\r
/* Just completely clear the interrupt mask on exit by passing 0 because\r
it is known that this interrupt will only ever execute with the lowest\r
/*-----------------------------------------------------------*/\r
\r
/* Override the default definition of vPortSuppressTicksAndSleep() that is weakly\r
-defined in the FreeRTOS Cortex-M3 port layet with a version that manages the \r
-asynchronous timer (AST), as the tick is generated from the low power AST and \r
+defined in the FreeRTOS Cortex-M3 port layet with a version that manages the\r
+asynchronous timer (AST), as the tick is generated from the low power AST and\r
not the SysTick as would normally be the case on a Cortex-M. */\r
void vPortSuppressTicksAndSleep( portTickType xExpectedIdleTime )\r
{\r