En los GPIO de algunos microcontroladores basados en ARM, se le proporciona un registro BSRR
en el que puede escribir para realizar cambios atómicos en un registro de salida de puertos.
Por ejemplo, para establecer Port A Bit 5
en 1
simplemente haces GPIOA->BSRR = (1<<5)
Esto alivia el problema de la atomicidad para que no tenga que realizar una secuencia de lectura-modificación-escritura. Sin el BSRR tendrías que hacer GPIOA->ODR |= (1<<5)
.
¿Cómo funciona el registro BSRR bajo el capó? ¿Se borra solo para que la próxima vez que desee establecer un bit no quede el bit anterior todavía?
Si quisiera establecer el bit 2 y luego el bit 6, puedo hacer primero GPIOA->BSRR = (1<<2)
y luego hacer GPIOA->BSRR = (1<<6)
pero ¿el bit 2 todavía no se configurará desde mi llamada anterior?