Está en la página 1de 17

SysTick

El temporizador del sistema, SysTick


• ARMv6-M admite un temporizador de sistema opcional, SysTick. SysTick proporciona un contador
simple, de 24 bits borrado con escritura, decremento, cíclico con un mecanismo de control flexible. Un
sistema puede usar este contador de varias maneras diferentes, que incluyen:

• Como un temporizado de tick RTOS que se dispara a una velocidad programable, como 100Hz, e
invoca una rutina SysTick.
• Como un temporizador de alarma de alta velocidad usando el reloj del procesador principal.
• Como alarma de tasa variable o temporizador de señal. El rango de duración disponible depende del
reloj de referencia utilizado y del rango dinámico del contador.
• Como un simple contador. El software puede usar esto para medir el tiempo de finalización o el tiempo
utilizado.
• Como control de fuente de reloj interno basado en duraciones faltantes o de reunión. El software
puede usar el campo COUNTFLAG en el registro de control y estado para determinar si una acción se
completó dentro de una duración determinada, como parte de un ciclo dinámico de control de gestión
de reloj.
Operación del SysTick
• El temporizador consta de cuatro registros:
• Un registro de control y estado. Esto configura el reloj
SysTick, habilita el contador, habilita la interrupción
SysTick e indica el estado del contador.
• Un registro de valor de recarga del contador. Esto
proporciona el valor de reinicio para el contador.
• Un registro del valor actual del contador.
• Un registro de valor de calibración. Esto indica el valor de
precarga requerido para un reloj del sistema de 10 ms.
Operación del SysTick
• Cuando está habilitado, el temporizador cuenta
regresivamente desde el valor en SYST_CVR. Cuando el
contador llega a cero, vuelve a cargar el valor en
SYST_RVR en el siguiente flanco del reloj. Luego
disminuye en los relojes posteriores. Esta recarga cuando
el contador llega a cero se llama cíclico.
• Cuando el contador pasa a cero, establece el bit de
estado COUNTFLAG en 1. La lectura del bit de estado
COUNTFLAG lo borra a 0.
Operación del SysTick
• Escribir en SYST_CVR borra el registro y el bit de estado
COUNTFLAG a cero. Esto hace que la lógica SysTick recargue
SYST_CVR de SYST_RVR en el siguiente reloj del temporizador.
Una escritura en SYST_CVR no activa la lógica de excepción de
SysTick.
• La lectura de SYST_CVR devuelve el valor del contador en el
momento en que se accede al registro.
• Escribir un valor de cero en SYST_RVR deshabilita el contador
en el siguiente cíclo. La lógica del contador SysTick mantiene
este valor de contador de cero después del ajuste.
Soporte de registro del temporizador del
sistema en el SCS
Registro de estado y control SysTick,
SYST_CSR
• Propósito Controla el temporizador del sistema y
proporciona datos de estado.
• Restricciones de uso No hay restricciones de uso.
• Configuraciones El registro solo está presente si se
implementa el temporizador del sistema opcional, de lo
contrario el registro está reservado
Registro de estado y control SysTick,
SYST_CSR
Bits Tipo Nombre Función
[31:17] - - Reservado
[16] RO COUNTFLAG Indica si el contador ha contado a 0 desde la última
lectura de este registro:

0 temporizador no ha contado a 0.
1 temporizador ha contado a 0.

COUNTFLAG se establece en 1 mediante una


transición de recuento de 1 a 0.
COUNTFLAG se borra a 0 por una lectura de este
registro y por cualquier escritura en el registro de Valor
actual.
[15:3] - - Reservado
Registro de estado y control SysTick,
SYST_CSR
Bits Tipo Nombre Función
[2] RW CLKSOURCE Indica la fuente de reloj SysTick:

0 SysTick usa el reloj de referencia externo opcional.


1 SysTick usa el reloj del procesador.

Si no se proporciona un reloj externo, este bit se lee como


uno e ignora las escrituras.
[1] RW TICKINT Indica si contar hasta 0 hace que el estado de la excepción
SysTick cambie a pendiente:

0 count to 0 no afecta el estado de excepción de SysTick.


1 recuento a 0 cambia el estado de la excepción SysTick a
pendiente.

Cambiar el valor del contador a 0 escribiendo cero en el


registro del valor actual de SysTick en 0 nunca cambia el
estado de la excepción SysTick.
Registro de estado y control SysTick,
SYST_CSR
Bits Tipo Nombre Función
[0] RW ENABLE IIndica el estado habilitado del contador SysTick:

0 contador está deshabilitado.


1 contador está funcionando.
Registro de valor de Recarga SysTick,
SYST_RVR
• Propósito Establece o lee el valor de recarga del registro
SYST_CVR.
• Restricciones de uso No hay restricciones de uso.
• Configuraciones El registro solo está presente si el
temporizador del sistema opcional se implementa, de lo
contrario el registro está reservado
Registro de valor de Recarga SysTick,
SYST_RVR
Bits Tipo Nombre Función
[31.24] - - Reservado. RAZ/WI
[23:0] RELOAD El valor para cargar en el registro SYST_CVR cuando
el contador llega a 0.
Registro de valor actual de SysTick,
SYST_CVR
• Propósito Lee o borra el valor del contador actual.
• Restricciones de uso Cualquier escritura en el registro
borra el registro a 0. El contador no proporciona
protección de lectura-modificación-escritura. Los bits no
admitidos se leen como cero.
• Configuraciones El registro solo está presente si el
temporizador del sistema opcional se implementa, de lo
contrario el registro está reservado
Registro de valor actual de SysTick,
SYST_CVR
Bits Tipo Nombre Función
[31.24] - - Reservado. RAZ/WI
[23:0] CURRENT Valor actual del contador

Este es el valor del contador en el momento en que se


muestrea.
Registro de valor de calibración SysTick,
SYST_CALIB
• Propósito Lee el valor de calibración y los parámetros
para SysTick.
• Restricciones de uso No hay restricciones de uso.
• Configuraciones El registro solo está presente si el
sistema opcional está registrado, de lo contrario, el
registro está reservado.
Registro de valor de calibración SysTick,
SYST_CALIB
Bits Tipo Nombre Función
[31] - NOREF Indica que se proporciona el reloj de referencia
IMPLEMENTATION DEFINED:

0 el reloj de referencia está implementado.


1 el reloj de referencia no está implementado.

Cuando este bit es 1, el bit CLKSOURCE del registro


SYST_CSR se fuerza a 1 y no se puede borrar a 0.Si no se
proporciona un reloj externo, este bit se lee como uno e
ignora las escrituras.
[30] - SKEW IIndica que el valor de calibración de 10ms es exacto:

0 El valor de calibración de 10 ms es exacto.


1 El valor de calibración de 10 ms es inexacto, debido a la
frecuencia del reloj.
[29-24] - - Reservado
Registro de valor de calibración SysTick,
SYST_CALIB
Bits Tipo Nombre Función
[23:0] - TENMS Opcionalmente, tiene un valor de recarga que se
utilizará para la temporización de 10 ms (100 Hz),
sujeto a errores de sesgo del reloj del sistema. Si este
campo es cero, el valor de calibración no se conoce.

También podría gustarte