Sí, puede usar pines SWD STM32 como GPIO, y sí, debe pensar en el impacto de hacerlo en la funcionalidad SWD.
Es probable que desee que cualquier otra cosa controlada por esas líneas esté detrás de un búfer con una entrada de alta impedancia, y desea que cualquier cosa que pueda conducir esas líneas esté detrás de una habilitación específica.
Pero también existe el riesgo de reutilizar esas líneas, especialmente como salida GPIO. Si lo hace, no podrá conectar una sonda SWD al sistema en ejecución.
Con un adaptador SWD de capacidad total, debería poder realizar una "conexión en proceso de restablecimiento" coordinada donde el núcleo de la CPU se reinicia y la conexión SWD se usa para suspender la operación antes de que el programa pueda reutilizar los pines y deshabilitar SWD . Sin embargo, esto puede ser difícil con algunas configuraciones.
Por lo general, si va a reutilizar los pines, es mejor que un programa proporcione uno o dos segundos de retraso al reiniciar antes de hacerlo.
Es probable que también desee hacer que esto dependa en absoluto de una definición de macro, tal vez una pasada en la línea de comandos del compilador. De esa manera, si decide utilizar un depurador de punto de interrupción, puede compilar el código con configuraciones alternativas que no reutilizan los pines SWD (quizás algo como arm-non-eabi-gcc -DNO_REPURPOSE_SWD
), y así dejar operando en modo SWD para permitir que el depurador funcione.
Y, por supuesto, lo que sea que se conecte a esos pines no debe funcionar mal de manera problemática si ve el tráfico SWD en lugar de las señales previstas. Así que cosas como las unidades de motor son una muy mala idea; pero los LED de estado o las salidas de los mensajes de aviso en serie podrían estar bien.