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.