Поменял местами.. ситуация не изменилась.

функция прерывания выглядит так:
CODE
void SysTickHandler(void)
{ // u32 time1=50;
// GPIOC->ODR |= (0x1000); // выставили 1 на светодиоде
// while(time1--); //подождали
// GPIOC->ODR &= ~(0x1000); // выставили 0 на светодиоде
}
Пробовал закоментарить всю функцию целиком, эффект тот же
далее, решил проверить как ведет себя контроллер.
написал следующий код:
CODE
SysTick->LOAD=31000;
test[0]=0;
SysTick->CTRL=7;
for(k=0;k<20000;k++)
{ GPIOA->ODR|=A8; // выводим 20000 периодов меандра на порт A8
GPIOA->ODR &= ~(A8);
}
После иницаализации сиситемного таймера вывожу на ногу A8 меандр и меряю длительность пачки осциллографом.
Так вот, видно что системный таймер отсчитывает нужное количество тактов, ( длительность пачки напрямую зависит от содержимого регистра LOAD)
входит в прерывание и там, очевидно остается- программа перестает выполняться..