En el libro mazidi ARM arch. , usando el contador sysTick ... leí esta parte
El programa 5-1 carga el valor inicial al máximo y descarga el valor actual del SysTick en los LED de PORTF a medida que se realiza la cuenta regresiva. En TI ARM LaunchPad, no podemos ver los 16 bits más bajos ya que está contando abajo cada 62.5 nseg (1 / 16MHz = 62.5). Toma los 16 bits inferiores 65536 x 62.5ns = 0.4096 ms para desbordar a los 8 bits superiores. Eso es el razón por la que lo cambiamos a la derecha 20 veces.
y aquí está el código
#include "TM4C123GH6PM.h"
int main (void)
{
int x;
/* enable clock to GPIOF at clock gating control register */
SYSCTL->RCGCGPIO |= 0x20;
/* enable the GPIO pins for the LED (PF3, 2 1) as output */
GPIOF->DIR = 0x0E;
/* enable the GPIO pins for digital function */
GPIOF->DEN = 0x0E;
/* Configure SysTick */
SysTick->LOAD = 0xFFFFFF; /* reload reg. with max value */
SysTick->CTRL = 5; /* enable it, no interrupt, use system clock */
while (1)
{
x = SysTick->VAL; /* read current value of down counter */
x = x >> 20; /* shift right to slow down the rate */
GPIOF->DATA = x; /* dump it to the LEDs */
}
}
/* This function is called by the startup assembly code to perform system specific
initialization tasks. */
void SystemInit(void)
{
__disable_irq(); /* disable all IRQs */
/* Grant coprocessor access */
/* This is required since TM4C123G has a floating point coprocessor */
SCB->CPACR |= 0x00F00000;
}
Mi pregunta es sobre la parte dentro del while (1)
Todavía no puedo ver cómo al cambiar a la derecha x = x >> 20;
puede reducir la velocidad para que podamos ver los LED "?
¿Y por qué exactamente eligió cambiar 20 veces?