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
| SysTick | Périphériques STM32 |
Documentation | Programming Manual (partie 4.4.5) | Ref. Manual RM |
#defines | core_cmX.h | stm32zzyyxx.h |
clock enable | bit ENABLE dans SysTick->CTRL | RCC->APBxENR |
interrupt number | SysTick_IRQn = -1
| ppp_IRQn >= 0
|
interrupt enable local | bit TICKINT dans SysTick->CTRL | bit yyIE dans ppp->CR |
interrupt enable global | - | NVIC->ISER[j] |
interrupt priority | SCB->SHP[i] | NVIC->IP[i] |
interrupt flag | - | bit yyIF dans ppp->SR |
Timer overflow/reload period | Systick -> LOAD | - |
Timer current value | Systick -> VAL | - |
Timer control and status | Systick -> 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).