Hard Fault after Interupt processing

Hello.
I installed and configured freeRTOS 7.2.0. After that i wrote a test program just to play with semaphores. If i push button on the board, led flashing mode should change. So i implemented all tasks, and, the strange fact is ISR process only one interrupt from the buttion, after second it executes portEND_SWITCHING_ISR function and hardfaults immidiatly.
Could someone help me?
Here is my code:
http://pastebin.com/JLHmR8j7
Here is problem part:
void EXTI0_IRQHandler(void)
{
      if(EXTI_GetITStatus(EXTI_Line0) != RESET)
      {
          static portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
          EXTI_ClearITPendingBit(EXTI_Line0);
          xHigherPriorityTaskWoken = pdFALSE;
          xSemaphoreGiveFromISR( xBinarySemaphore, &xHigherPriorityTaskWoken );
          portEND_SWITCHING_ISR(xHigherPriorityTaskWoken);
      }
}
After 2 press hardfault exception occurs.

Hard Fault after Interupt processing

Some ideas. - The code you post does not show the interrupt priority being set, or the number of preemption priority bits being set.  Please see http://www.freertos.org/RTOS-Cortex-M3-M4.html. - When cr is 1, you create vBlinkLed before deleting vBlinkLed1.  Are they trying to access the same hardware pins simultaneously? - What is being executed when the hard fault occurs? 
http://www.freertos.org/Debugging-Hard-Faults-On-Cortex-M-Microcontrollers.html Regards.