7 votos

STM32F0 GPIOx_ODR vs GPIOx_BSRR

¿Además de la estructura del registro, cuál es la diferencia entre GPIOx_ODR y GPIOx_BSRR?
¿Es GPIOx_BSRR una capa de abstracción para GPIOx_ODR? Sé que un cambio en GPIOx_BSRR "cambiará" el GPIOx_ODR pero ¿cómo y cuáles son las diferencias?

Más información:

  • página de descripción de registros -162 de STM32F0advanced ARM.pdf
  • MCU STM32F051R8
  • Placa STM32F0DISCOVERY
  • compilador arm-none-eabi-gcc -v versión de gcc 4.8.3

9voto

Luke Puntos 131

El BSRR tiene campos de bits que te permiten establecer y borrar bits en un puerto de forma atómica, sin una operación de lectura-modificación-escritura. En lugar de leer el valor de ODR, hacer una operación OR con los bits a establecer y escribirlo de vuelta, simplemente realizas una única escritura de 32 bits en el BSRR para establecer o únicamente los bits relevantes.

Esto a menudo significa que no tienes que deshabilitar interrupciones o utilizar otras protecciones de concurrencia al usar el BSRR, y resulta en un código más pequeño y más rápido para operaciones de manipulación de bits.

2voto

Jasmine D Puntos 1

ODR te da un control completo del estado de salida de todo el puerto. Si sabes cuáles deberían ser los valores de los pines del puerto en cualquier momento dado, puedes escribir directamente en ODR. Esto sobrescribirá los valores de cada pin, donde 1 establece y 0 reinicia. Esto puede ser más deseable que BSRR si sabes cuáles deberían ser los valores de los pines de salida en memoria.

BSRR te proporciona un método para establecer y reiniciar a nivel de pin individual sin importar cuáles sean los valores actuales. Te ofrece dos rangos donde puedes establecer y reiniciar explícitamente los pines como una operación de un solo disparo. Cada 1 en el rango de establecimiento se establecerá para ese pin, y cada 1 en el rango de reinicio se reiniciará para ese pin (si tanto el establecimiento como el reinicio están configurados para un pin, el establecimiento tiene prioridad). Esto puede ser más deseable que ODR si no es necesario mantener en memoria cuáles deberían ser los pines.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X