Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo evitar que algunos programas específicos en STM32 se vean afectados por el reinicio del sistema?

¿Cómo evitar que algunos programas específicos en STM32 se vean afectados por el reinicio del sistema?

Algunos sistemas permiten el reinicio, pero tienen requisitos externos especiales: un determinado estado de IO no se puede cambiar debido al reinicio y un determinado contador del temporizador no se puede cambiar.

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.