¿Cómo evitar que algunos programas específicos en STM32 se vean afectados por el reinicio del sistema?
Ejemplo: El sistema A controla la alimentación del sistema B a través de un IO. La alimentación del sistema B solo se enciende cuando este IO está configurado en un nivel alto.
Durante el funcionamiento normal, el sistema B se apagará solo cuando reciba un comando de apagado del sistema A (es decir, no se puede apagar sin energía). El sistema A debe reiniciarse durante el funcionamiento.
En este momento, si se utiliza el método de reinicio convencional, se restablecerá el IO, lo que no cumple con los requisitos. Sería bueno si hubiera una manera de restablecer el kernel sin restablecer los periféricos.
A continuación, presentaremos dos métodos para lograr el reinicio.
2 Acerca del reinicio
Cuando se trata de restablecer, todos estamos familiarizados con él. Básicamente, el sistema tiene un botón de reinicio.
Existen muchos tipos de reinicios: reinicio de encendido, reinicio de apagado, reinicio de pin, reinicio de vigilancia, reinicio de software, etc.
El botón de reinicio mencionado anteriormente significa que se restablece el pin de reinicio correspondiente; el reinicio del kernel y el reinicio del sistema mencionados en este artículo son reinicios de software.
3 La diferencia entre reinicio del núcleo y reinicio del sistema
El núcleo mencionado en este artículo se refiere al núcleo del procesador, que es la MPU (Unidad de microprocesador). Por ejemplo, STM32F103, su núcleo es Cortex-M3.
El sistema aquí consta de un núcleo y periféricos, que es una MCU (unidad de microcontrolador). Para STM32F103, es el núcleo Cortex-M3 y varias interfaces periféricas.
Reset de núcleo: Sólo se resetea el procesador Cortex-M3, pero no se resetean los registros de periféricos como GPIO, TIM, USART y SPI.
Restablecimiento del sistema: Restablece el procesador M3 y los registros del periférico.
Así que el reinicio que solemos decir generalmente se refiere al reinicio del sistema.
Código fuente de la función de reinicio del sistema y reinicio de 4 núcleos
Este artículo toma Cortex-M3 (STM32F103) como ejemplo para ilustrar que otros chips son similares.