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.