Estoy tratando de modificar la biblioteca lcd stm32f103 2x16 a stm32f4. Hay registros BRR y BSRR en stm32f103, pero no hay registros similares en la estructura GPIO_TypeDef en stm32f4, por lo que no sé cómo modificar estos códigos.
LCD16X2_GPIO_D5->BSRR = LCD16X2_PIN_D5;
LCD16X2_GPIO_D4->BRR = LCD16X2_PIN_D4;
Hay dos versiones diferentes de encabezados STM32F4 lanzados por ST, con algunas incompatibilidades. El que viene con la biblioteca StdPeriph define 16 bits BSRRL
y BSRRH
ese es el que tienes. El otro que viene con la biblioteca STM32CubeF4 tiene una sola BSRR
definición de 32 bits, que corresponde al manual de referencia.
Ahora revisa la definición en tus encabezados
__IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */
__IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */
BSRRL
corresponde a la mitad baja, bits 0-15 del BSRR
registro como se describe en el manual de referencia, que establece el bit de salida correspondiente en 1 (alto). BSRRH
corresponde a la mitad alta, bits 16-31 del BSRR
registro, que establece el bit de salida correspondiente en 0 (bajo).
Puede usar BSRRL
en lugar de BSRR
para activar un pin, pero tenga en cuenta que la definición es solo de 16 bits, por lo que no puede activar algunos bits y desactivar otros pines en una sola operación usando esta definición, porque las escrituras se truncan a 16 bits por el compilador.
BSRRL
tiene la misma función que BRR
, la única diferencia es que el compilador trunca la escritura a 16 bits, nada de lo que deba preocuparse a menos que deba contar los ciclos para obtener el tiempo correcto.
chris stratton
7marina4
chris stratton
siguió a Mónica a Codidact
siguió a Mónica a Codidact