Como en el tema: ¿Puedo conectar algo más a los pines de programación en STM32 (SWD)? Por ejemplo, un solo LED con resistencia limitadora de corriente conectada a los pines SWDIO y SWCLK. ¿Esta carga afectará la programación a través de esta interfaz (SWD)? ¿Debo usar un búfer?
Sí, puede usar pines STM32 SWD como GPIO, y sí, debe pensar en el impacto de hacerlo en la funcionalidad SWD.
Es probable que desee que cualquier otra cosa impulsada por esas líneas esté detrás de un búfer con una entrada de alta impedancia, y desee que cualquier cosa que pueda impulsar 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 completa, debería poder realizar una "conexión bajo reinicio" 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.
Entonces, en general, si va a reutilizar los pines, es mejor que un programa proporcione uno o dos segundos de retraso al reiniciar antes de hacerlo.
Probablemente también desee que hacerlo dependa en absoluto de una definición de macro, tal vez una pasada en la línea de comando del compilador. De esa manera, si decide que desea usar un depurador de punto de interrupción, puede compilar el código con configuraciones alternativas que no reutilicen los pines SWD (tal vez algo como arm-non-eabi-gcc -DNO_REPURPOSE_SWD
), y así dejarlos funcionando en modo SWD para permitir que el depurador función.
Y, por supuesto, lo que sea que conecte a esos pines no debe funcionar incorrectamente si ve tráfico SWD en lugar de las señales previstas. Entonces, cosas como los motores son una muy mala idea; pero los LED de estado o las salidas de mensajes de aviso en serie pueden estar bien.
scott seidman
chris stratton