Hard Fault after Interupt processing

sirdogged wrote on Tuesday, September 25, 2012:

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.

rtel wrote on Wednesday, September 26, 2012:

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.