Daho_Cro
3.
void init_SysTick(void){
// odrediti prioritet sistemskog prekida
SCB -> SHP[11] = (0x2UL << 4); // prioritet se nalazi u gornjem niblu bajta, zato ide << 4
// grupiranje prekida tj podesavanje
SCB -> AIRCR = SCB -> ( (AIRCR & 0xF8FFUL) | 0x05FA0000UL );
// inicijalizacija sistemskog brojila
SysTick -> VAL = 0x0UL; // trenutna vrijednost 0
SysTick -> LOAD = 0x5207UL; // AHB = 168MHz, 168/8 = 21MHz... (21*10^6)/(1*10^3) = 21000 tj. 20999 u dekadskom, sto je 5207 hex
SysTick -> CTRL |= 0x3UL; // za omoguciti brojilo, prekid i odabrati izvor takta
}
// prekidna funkcija
void __atribute_((interrupt)) SysTickHandler(void){
volatile uint32_t V1,V2;
int brojac = 0;
++V1;
++brojac;
if(brojac == 10){
++V2;
brojac = 0;
}
}