Le timer SysTick du STM32

Particularités du timer Systick

Ce timer a un statut très particulier par rapport aux autres périphériques embarqués sur le STM32, ce qui créé le besoin d'une documentation particulière.
En effet, ce timer est défini par ARM et livré avec le coeur et le contrôleur d'interruptions NVIC, alors que les autres périphériques sont conçus par le fabriquant de la puce, ST dans ce cas.
Dans le "jargon ARM", chaque période de comptage du timer est appelée "Tick". Si un timer est cadencé par une horloge de période égale à 100 ns, une durée 10 000 ticks équivaut à une durée de 10 000 x 100 ns = 1 ms.

Comparaison

SysTickPériphériques STM32
DocumentationProgramming Manual (partie 4.4.5)Ref. Manual RM
#definescore_cmX.hstm32zzyyxx.h
clock enablebit ENABLE dans SysTick->CTRLRCC->APBxENR
interrupt numberSysTick_IRQn = -1
ppp_IRQn >= 0
interrupt enable
local
bit TICKINT dans SysTick->CTRLbit yyIE dans ppp->CR
interrupt enable
global
-NVIC->ISER[j]
interrupt prioritySCB->SHP[i]NVIC->IP[i]
interrupt flag-bit yyIF dans ppp->SR
Timer overflow/reload periodSystick -> LOAD-
Timer current valueSystick -> VAL-
Timer control and statusSystick -> CTRL-

N.B. la fonction NVIC_SetPriority() reconnait le signe négatif du numéro de l'interruption SysTick et assure la configuration de sa priorité comme pour les autres périphériques (cf core_cmX.h).