By default, the SysTick Timer Counter counts down from 84000 to 0 in 1 ms, then reloads and so on.
I bet that your readings take more than 1 ms and SysTick can't handle more than 1 ms (by default).
Anyway, the right process to read Systick -> VAL should be this one:
volatile uint32_t t0, t1, t3;
void setup() {
Serial.begin(250000);
}
void loop() {
noInterrupts();
t0 = SysTick->VAL;
// Do some stuff during less than 1 ms, e.g. :
delayMicroseconds(5);
t1 = SysTick->VAL;
t3 = ((t0 < t1) ? 84000 + t0 : t0) - t1 - 2 ;
interrupts();
Serial.print("number of ticks: ");
Serial.println(t3 );
delay(1000);
}