Dado que STM32 puede operar ODR directamente, ¿por qué necesitamos configurar BSRR y BRR?
Si quieres cambiar el estado de un determinado bit sin afectar a otros, es fácil utilizar BSRR o BRR. La operación directa de ODR requiere un proceso de "lectura-operación-escritura", lo que reduce la velocidad.
Por ejemplo, para borrar PA1, PA3 y PA7 sin afectar el estado de otros bits, es decir:
GPIOA->BRR=PA1|PA3|PA7;
Si desea utilizar ODR para operar, será así:
GPIOA->ODR&=~(PA1|PA3|PA7);
Aunque la declaración C Solo hay uno de ellos, pero si observa el código ensamblador, encontrará que usar BRR es mucho más rápido que ODR.