Цитата(sonycman @ Jan 29 2010, 20:48)

Конечно.
Каким значением Вы проинициализировали регистр SysTick Reload Value?

Пробовал записывать разные значения.
Для проверки счетчика сделал такой код:
CODE
u16 k;
u32 test[500];
// SysTick configuration
SysTick->CTRL=5;// если =7 то это с вызовом прерывания
SysTick->LOAD=31000;
// SysTick->CALIB=5000;
// for(k=0;k<500;k++)test[k]=SysTick->VAL;
Далее я это запускаю в main перед While(1); а в самом теле программы вывожу этот массив ( test[0..500] ) на usart.
В результате вижу что таймер считает, в регистре VAL постепенно уменьшающиеся значения. Только уменьшаются они больно быстро- с шагом примерно 12 единиц. Как будто таймер считает каждый такт процессора. ( На проход цикла около 12 тактов тратится или около того... )
Но стоит мне приравнять регистр управления =7, ( 0b111) то программа находящаяся в while(1) перестает выполняться. в прерывании стоит мигнуть светодиодом или вообще в прерывании ничего не делать - без разницы.