Las chispas pueden ser creadas por cualquier cantidad de cosas. Ciertamente por alto voltaje; Esto se puede ver cuando toca un pomo de la puerta después de cruzar la alfombra en un día seco :)
Sin embargo, en su caso, no creo que la chispa haya sido causada por este mecanismo. En cambio, si su pin de entrada se configuró como un menú desplegable, creó un cortocircuito entre su suministro de 3.3 V y el suelo. Este cortocircuito causó que una gran cantidad de corriente fluyera, lo que literalmente derritió / vaporizó una parte del circuito. Este material vaporizado es lo que viste como una "chispa".
Al usar el circuito en su diagrama, el pin de entrada siempre debe estar configurado como de alta impedancia ("Hi-Z"). Esto evita que cualquier corriente significativa fluya hacia (o salga) del pin.
Tenga en claro la terminología de "tirar a tierra". Esa frase se usa a veces como la usaste, es decir, cuando el pin está en un nivel bajo (o está siendo "tirado" o "bajo" bajo). Sin embargo, también se usa cuando se hace referencia a resistencias pull-up o pull-down. Con resistencias de pull-up (o pull-down), el pin se tira alto (o bajo) a través de una gran resistencia . Esta resistencia limita la corriente, evitando daños en el circuito.
Las resistencias pull-up (o pull-down) son necesarias para el circuito que se muestra. Lo has hecho correctamente con R314. Estos pueden ser componentes discretos reales (como los usaste), o la mayoría de las salidas de los microcontroladores pueden configurarse para usar pull-ups internos (o pull-down).
Por cierto, cada vez que realice o rompa una conexión eléctrica, existe la posibilidad de una pequeña chispa. Imagina dos conductores en el aire separados por 1 cm. Tomaría aproximadamente 31 kV causar una chispa. Si estuvieran separados solo 0,5 cm, se necesitarían unos 17 kV. Como puede ver, el voltaje de ruptura depende de la distancia.
Cuando conectas dos conductores juntos, estás disminuyendo la distancia de separación hasta que realmente entran en contacto. Eventualmente ocurrirá una chispa, aunque a menudo es demasiado pequeña para detectarla. No es un problema a menos que la chispa sea bastante alta energía.
Curiosamente, la mayoría de los daños por ESD se hacen sin chispas perceptibles. Quizás esto se deba a que las personas no se dan cuenta de que está sucediendo y, por lo tanto, no lo corrigen hasta que es demasiado tarde ...
Editar :
Gracias por publicar tu código. Parece correcto , aunque hay algunas cosas que causan preocupación. Por ejemplo, sus comentarios no coinciden con lo que realmente está sucediendo. ¿Piensas usar PC10 y PC12 (según el código) o PB6 y PB7 (según los comentarios)?
Otro problema es que estás configurando la configuración de salida en Open Drain. Esto no debería importar, ya que la configuración de salida se ignora cuando el pin se establece en una entrada. Pero, si estuvieras experimentando y configurándolo en Salida, entonces causaría este tipo de falla.
Para su información, ha establecido correctamente el pin como una entrada digital (lo que implica una alta impedancia) con este comando: GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
Una vez que el pin se ha establecido como entrada, ciertos parámetros se ignoran y generalmente se omiten de su código. En este caso, puede optar por eliminar estas líneas:
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
Espero que esto ayude!