Системный таймер - SysTick timer(STK), 24х битный декрементный счетчик, который является частью ядра. После того как его значение будет нулевым, происходит перезагрузка таймера до значения в STK_LOAD регистре во время следующего тактового периода.
Во время отладки если процессор остановлен, то и таймер не считает.
Создадим папку для проектов и поместим туда базовый проект:
nis@jane ~/stm32/f4examples $ mkdir 03-systick
nis@jane ~/stm32/f4examples $ cp -av 02-ints/00-base/ 03-systick/
Также обновим файл startup.c взяв его из примера инициализации прерываний:
nis@jane ~/stm32/f4examples $ cp 02-ints/01-init-ints/startup.c 03-systick/00-base/
Добавим в базовый проект обработчик для системного таймера в файле startup.c, а также добавим заголовочный файл в рабочем файле проекта work.c.
В качестве примера возьмем дополненый пример мигания светодиодов со сменой режима, и изменим механизм задержки, а также механизм переключения светодиодов.