¿Significado de ARM SysTick Timer vs. Other Timers?

4

Vengo de MCU de 8 bits y he usado un temporizador del sistema para generar una interrupción periódica que parece ser la motivación detrás del temporizador Cortex M SysTick.

¿Hay algún tipo de importancia arquitectónica en el uso del temporizador SysTick en comparación con cualquier otro temporizador en las MCU de Cortex M?

¿Es solo una cuestión de preferencia de codificación, que los programadores hayan usado el temporizador SysTick como el temporizador principal cada pocos ms?

El manual de referencia de 800 páginas guarda bastante silencio con respecto a SysTick, aparte de la forma en que se aplica post / prescalars.

Veo que es una interrupción predeterminada de alta prioridad, por lo que es la ruta de menor resistencia para el tick del sistema. Pero la prioridad de interrupción es configurable.

(El origen de esta pregunta es que estoy usando el STM32CubeMX para generar una plantilla de proyecto, y cuando va a agregar FreeRTOS, el Cubo genera una advertencia de que FreeRTOS debería usar un temporizador separado de SysTick ... lo que me hace Me pregunto si hay algo más en juego aquí. Acabo de asumir que harías el SysTick porque así es "cómo se hacen las cosas" ...).

    
pregunta Leroy105

1 respuesta

3

Como se responde en los comentarios.

El SysTick si está presente es parte del núcleo de ARM, los otros temporizadores son del proveedor de chips. SysTick tiene un evento más directo (piense en la interrupción) en el núcleo donde las otras veces se producen a través de interrupciones, aunque eso no importa. Y otros temporizadores tienden a tener más características.

Usted etiquetó Cortex-M, por lo que es probable que este sea un microcontrolador, lo que significa que podría estar haciendo baremetal, lo que significa que puede hacer lo que quiera y decidir qué temporizadores hacen qué. Si tomas un RTOS o SO ya creado para ese chip, entonces ellos han decidido qué recursos quieren consumir y por qué. Principalmente opinión basada en lo que va.

El temporizador del systick es mucho más fácil y más sencillo de poner en marcha, y no siempre está presente, algunos núcleos no lo tienen como opción en absoluto y algunos como opción (para que el proveedor de chips decida en el momento de la compilación), por lo que tiene esa ventaja, aunque puede haber algunos temporizadores en algunos chips que son igualmente simples.

Los temporizadores de los proveedores de chips a veces pueden impulsar pines de E / S o tener alguna participación externa cuando el systick está contenido dentro del núcleo de AFAIK.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas