¿Puede simular una entrada GPIO en STM32F0?

1

Estoy probando una variedad de cosas con pines de entrada y temporizadores personalizados en el STM32F0. Todas las funciones del temporizador son funciones alternativas en los pines y, por lo tanto, no puede usar el botón de usuario (PC13 en el NUCLEO) ya que no tiene ningún temporizador en sus funciones alternativas.

Entonces, la pregunta es: ¿Puede (en el software) "simular" que una entrada de pin GPIO va a ser alta? Esto facilitaría la escritura del código, ya que no tendrá que conectar la placa de prueba NUCLEO, los cables del encabezado, etc. Estaba pensando en cambiar manualmente los bits en el registro IDR de GPIO pero es de solo lectura. Y el registro BSRR solo afecta a las salidas. ¿Hay alguna manera de lograr esto?

ST debería haber puesto el botón de usuario en un pin diferente con más funciones ...

¡Gracias!

    
pregunta Titov

2 respuestas

3

Utilice las resistencias internas de extracción y extracción.

Mientras un pin no tenga nada conectado, y es un pin de entrada, al establecer los bits correspondientes en GPIOx_PUPDR se activarán las resistencias pullup o pulldown, que afectan directamente al estado del pin. No solo simulará que el pin suba o baje, sino que el voltaje realmente aparecerá en el pin. La corriente podría ser demasiado débil para conducir cualquier otra cosa, pero el estado del pin cambiaría. Debería funcionar incluso cuando el pin tiene una función input alternativa, como el disparador externo o la captura de entrada de un temporizador.

Por ejemplo, establecer PA12 ( TIM1 external trigger) en alto

GPIOA->PUPDR=(GPIOA->PUPDR & ~(3 << (2 * 12))) | (1 << 2 * 12);

Ajustando el mismo pin a bajo

GPIOA->PUPDR=(GPIOA->PUPDR & ~(3 << (2 * 12))) | (2 << 2 * 12);
    
respondido por el berendi
1
  

¿Puede simular una entrada GPIO en STM32F0?

Ese es el problema equivocado a resolver. La verdadera pregunta es:
¿Puede simular una entrada GPIO?

Sí, puedes. Puedes hacer un entorno de ejecución diferente. Por ejemplo, ejecute el software en su PC, o cree objetos falsos y periféricos y ejecútelos en el objetivo.

Esto es parte de las pruebas de software, por ejemplo, con Test Driven Development.

Práctico:
En cualquier plataforma incorporada, los registros se definen en un archivo de encabezado. Para ST, estas son estructuras definidas y asignadas a periféricos en stm32f0xx.h . Puede crear un archivo de encabezado modificado para su entorno de prueba donde estas estructuras no se asignan a los periféricos, sino a la memoria. De esta manera puede simular todo mediante una prueba que puede escribir.

    
respondido por el Jeroen3

Lea otras preguntas en las etiquetas