¿Es mejor el procedimiento para 'recuperar' un STM32F103C8T6?

3

Tengo un STM32F103C8T6 (también conocido como píldora azul) y trabajé con él.

A veces, debido a una razón que no entiendo, después de la depuración (usando Eclipse), la conexión se pierde y no puedo iniciar una nueva sesión de depuración.

Lo único que hay que hacer es el siguiente procedimiento que consume tiempo:

  • Cerrar Eclipse
  • Iniciar la utilidad ST-Link
  • En el menú ST-LINK / Firmware Update, seleccione el botón Device Connect (para ver si se puede conectar el stick ST Link).
  • En caso de error, vuelva a insertarlo (Windows muestra un dispositivo USB desconocido) y vuelva a realizar el paso anterior
  • En caso de que no haya error, muestra la versión: V2.J27.S6 STM32 + STM8 Debugger
  • Que en el STM32, tengo que presionar y mantener presionado el botón de reinicio
  • Seleccione la opción de menú Destino / Borrar chip
  • Suelte el botón (a tiempo, de lo contrario, repita el paso anterior)
  • Se borra el chip.
  • Vuelva a iniciar Eclipse y puedo continuar

Esto ya es una operación muy tediosa ... ¿existe una solución mejor? ¿O por qué motivo la sesión de depuración hace que el STM32 pierda la capacidad de iniciar una nueva sesión de depuración?

E incluso que en algunos casos recibo el siguiente error al intentar depurar:

23:23:02 : Can not connect to target!
                  If you're trying to connect to an STM32W1xx device, please select Normal or HotPlug mode from Target->Settings menu.
                  If you're trying to connect to a low frequency application , please select a lower SWD Frequency mode from Target->Settings menu.
23:23:03 : No target connected

El fragmento del archivo de configuración del proyecto Eclipse:

# use software system reset
reset_config none
set CONNECT_UNDER_RESET 0
    
pregunta Michel Keijzers

1 respuesta

2

Encontré el problema de una de las preguntas, así que lo agregué para referencia de otras personas, ya que es un valor predeterminado no trivial:

Al usar el STM32CubeMX que hago, siempre que se realiza un proyecto, se selecciona de forma predeterminada el siguiente elemento:

  • SYS, Debug: No hay depuración

Esto hace que se genere el siguiente código en HAL_MspInit:

__HAL_AFIO_REMAP_REMAP_SWJ_DISABLE();

Tan pronto como el depurador pasa este comando (que es uno de los primeros comandos en HAL_Init que se llama en main (), el depurador pierde la conexión e incluso no se puede iniciar una nueva sesión de depuración.

Se puede arreglar fácilmente con la configuración en

  • SYS, Debug: Serial Wire

(que también se llama SWD: Serial Wire Debug y es compatible con ST Link 2).

Esto hace que se genere el siguiente código en HAL_MspInit:

__HAL_AFIO_REMAP_SWJ_NOJTAG();

Y la depuración funciona como siempre.

    
respondido por el Michel Keijzers

Lea otras preguntas en las etiquetas