STM32F103C8 Puertos GPIO A a G

0

Pude obtener ejemplo de dwelche blinker01 para funcionar bien; Gracias una vez más Old Timer!

Me dirigí a la reference manual para rastrear cómo funciona ese código, y es bastante fácil de seguir.

  • 1) Habilitando el Puerto C usando el bit 4 en el registro RCC_APB2ENR
  • 2) Configure los bits 21 y 20 de GPIO_c_CRH a 01 (salida máx. 10Mhz)
  • 2.1) GPIO_c_CRH es 0x4001 1000 GPIO Port C + 0x04 offset
  • 3) Establece los bits 23 y 22 a 00 para la salida push-pull
  • 4) ... entiendes el punto

El problema que estoy teniendo es probablemente algo super simple por falta de experiencia:

No pude averiguar por qué el puerto C es el que está habilitado. El Pin se llama PC13 , y hay otros pines: PA3 o PB15 . ¿Entonces habilitaría los puertos A y B para esos pines?

¿Por qué entonces hay de la A a la G? También tuve problemas para averiguar las funciones alternativas de este MCU. Mi experiencia con AF es solo de Raspberry Pi.

    
pregunta Sam Hammamy

2 respuestas

3

Para el STM32, las abreviaturas comunes son PXDD - Puerto X Pin DD.

Entonces, sí, para PA3, habilitaría el puerto A, para el puerto B PB15

Hay puertos A a Z según la cantidad de GPIO que tenga el dispositivo más grande de la familia. Cada puerto soporta hasta 16 pines. Así que para 160 GPIOs necesitas 10 puertos (por ejemplo).

Hay algunos pines que están vinculados a un determinado puerto, ya que parece que puede encontrar el puerto H en un dispositivo que solo tiene 24 GPIOs disponibles.

La asignación de funciones alternativas se encuentra en la descripción del pin de la hoja de datos del dispositivo específico que está utilizando y no se puede encontrar en el manual de referencia.

Tengo cuatro documentos que utilizo regularmente durante el desarrollo:

  1. Manual de referencia
  2. Hoja de datos
  3. Manual para programadores (contiene la descripción periférica del núcleo)
  4. Errata (porque puede encontrar un error de hardware)

El orden es en realidad el orden de importancia para mí.

Me he dado cuenta de que estás usando un dispositivo F10x.

La familia STM32F1xx es la más antigua y, lamentablemente, no la más descriptiva. Han mejorado especialmente en la parte del mapeo de funciones alternativas, ya que es bastante difícil saber qué está haciendo realmente el pin en un F1xx si habilitas varios periféricos con el mismo pin.

Para esta familia, tiene la hoja de datos que le indica qué pin puede hacer qué. Y en el manual de referencia, tiene la descripción del AFIO_MAPR que le permite volver a asignar ciertas funciones a otros pines.

    
respondido por el Arsenal
2

Como notó correctamente, el identificador de puerto en el nombre de pin P C 13 indica que este pin pertenece al banco C de IO. Por lo tanto, el pin P A 3 pertenecería a IO bank A mientras que P B 15 pertenece al IO bank B. El hecho de que los pines se dividan en bancos IO separados ofrece cierta flexibilidad en el manejo de IO, ya que puede desactivar bancos completos o leer / escribir un banco completo. / p>

Con respecto a las Funciones alternativas, generalmente puede obtener una primera visión general de la hoja de datos, en su caso Hoja de datos de STM32F10x .

    
respondido por el Humpawumpa

Lea otras preguntas en las etiquetas