¿No se documentan las opciones de pull-up / pull-up para STM32F103?

2

Al intentar configurar los GPIO mediante CMSIS en una placa NUCLEO-F103RB , Parece que no pude encontrar en manual de referencia cómo se supone que uno debe elegir entre las resistencias internas pull-up y pull-down.

La página 160 muestra la configuración de los bits CNF y MODE y muestra que los bits son los mismos para el pull-up y el pull-down. Al buscar en todo el archivo PDF "pull-up" y "pull-down" no se obtienen resultados. La errata tampoco tiene ninguna mención de esto.

¿Se olvidó ST seriamente de poner esta información en el manual? Si es así, ¿cómo es que nadie se ha dado cuenta de esto? ¿O simplemente estoy siendo ciego?

De todos modos, al mirar su biblioteca de periféricos estándar, parece que escribir un 1 en el bit correspondiente en el registro GPIO BRR activa la resistencia desplegable, mientras que escribir un 1 en el BSRR activa la resistencia de extracción:

    /* Reset the corresponding ODR bit */
    if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
    {
      GPIOx->BRR = (((uint32_t)0x01) << pinpos);
    }
    else
    {
      /* Set the corresponding ODR bit */
      if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
      {
        GPIOx->BSRR = (((uint32_t)0x01) << pinpos);
      }
    }

Este código se puede encontrar en el archivo stm32f10x_gpio.c.

    
pregunta Chi

1 respuesta

9

La información que está buscando está en el manual, pero no es tan obvia como podría ser. La tabla que mencionó en la página 160 contiene más información:

Como puede ver, asumiendo que el pin está configurado como una entrada, el valor en los registros ODR es el factor decisivo en cuanto a si el pin es pull-up o pull-down.

Puede establecer y / o borrar todos estos bits a la vez escribiendo un valor de 16 bits en el registro GPIOx_ODR apropiado, o puede configurarlos / restablecerlos individualmente usando los registros GPIOx_BRR y / o GPIOx_BSRR.

Curiosamente, el mismo registro ODR controla el estado del pin (alto o bajo) cuando el pin está configurado como salida.

Descubrí que a veces puedo aprender más sobre el funcionamiento de los controladores STM ARM leyendo sus bibliotecas periféricas estándar que sus manuales de referencia.

    
respondido por el bitsmack

Lea otras preguntas en las etiquetas