Los Registros de restablecimiento de periféricos deben hacer que todo el conjunto de registros y el estado interno del periférico se restablezcan a los valores predeterminados de encendido. Esto significa que no solo los registros que están expuestos al usuario, sino también cualquier registro interno, contadores o indicadores deben configurarse como lo estarían cuando el dispositivo se encienda inicialmente. Sin embargo, esto no se especifica claramente en la hoja de datos o el manual de referencia, lo cual es desafortunado.
Algunas de las descripciones de los periféricos en la hoja de datos hacen referencia a cosas que suceden cuando se activa el restablecimiento del periférico, y esto da una idea de la profundidad de la restauración del periférico. Aquí hay un ejemplo del STM32F4xx manual de referencia :
Registro de bloqueo de configuración de puerto GPIO (GPIOx_LCKR)
(x = A..I / J / K)
Este registro se utiliza para bloquear la configuración de los bits de puerto cuando una secuencia de escritura correcta
Se aplica al bit 16 (LCKK). El valor de los bits [15: 0] se utiliza para bloquear la configuración de
GPIO. Durante la secuencia de escritura, el valor de LCKR [15: 0] no debe cambiar. Cuando el
La secuencia LOCK se ha aplicado en un bit de puerto, el valor de este bit de puerto ya no puede ser
modificado hasta el próximo MCU o reinicio periférico.
Esto deja claro que el restablecimiento de periféricos puede lograr cosas que el programa de usuario no puede hacer de otra manera.
A tu comentario:
según entiendo, ¿dices que la unidad RCC restablece un periférico a su valor predeterminado dándole un poco de reloj?
La sincronización de un periférico es lo que permite que ese periférico funcione. Generalmente, todos los dispositivos periféricos requieren un reloj para controlar sus operaciones internas y garantizar la sincronicidad con el resto de la MCU. Esto es completamente independiente de la operación de restablecimiento, aunque el Reinicio y el Controlador del reloj manejan ambas funciones.
Sería lógico suponer que el reinicio periférico activa el mismo circuito que el reinicio de encendido, lo que significa que el reinicio periférico será efectivo incluso si el RCC desactiva el reloj del periférico. Sin embargo, esto es tampoco está documentado en cualquier lugar que pueda encontrar, y es posible que algunos aspectos del comportamiento de restablecimiento sean sincrónicos y no funcionen si el periférico no recibe un reloj.