Recuperación de errores de tiempo de ejecución en stm32l0

0

Tengo el perro guardián independiente corriendo y recibo reinicios raros por razones desconocidas.

¿Cómo puedo detectar estos errores y hacer un reinicio controlado? Quiero almacenar algunas cosas en EEPROM y luego reiniciar la aplicación.

Sin embargo, al desconectar el dispositivo, el dispositivo debe olvidar todo lo que sabe. Así que solo quiero restaurar EEPROM si se produce un error.

void HardFault_Handler(void){
      EEPROM_save_ram();
}

void Reset_Handler(void){
     EEPROM_restore_ram();
}

¿Hay algo que me muestre si es un reinicio en caliente? ¿Se ha reiniciado un watchdog? ¿O simplemente un arranque en frío normal?

    
pregunta Flying Swissman

1 respuesta

1

Sí, normalmente hay un bit que le mostrará la causa de encendido / reinicio (¿ha revisado la hoja de datos?).

Una forma de detectar los errores podría ser configurar el watchdog como interrupción en lugar de restablecerlo (no estoy seguro acerca de STM32F0, pero lo he usado en chips similares).

En cuanto a guardar y restaurar RAM en / desde EEPROM, puede ser más fácil simplemente volcar el contenido de la RAM en el controlador de reinicio (antes de que el CRT borre las secciones .bss y copia .data).

    
respondido por el domen

Lea otras preguntas en las etiquetas