STM32F103 - simple parpadeo, pero voltaje en TMS y TDI

0

Tengo algunos problemas para hacer que mi STM32F103 funcione como es mi intención. En mi tablero de trabajo (anteriormente flasheado con el firmware de Espruino) tengo LEDs conectados a las líneas TMS TCK y TDI.

Después de parpadearlo con .bin generado por System Workbench STM32, apago una luz tenue de estos LED.

Aquí está el código que usé (mi código real es mucho más largo pero tiene el mismo síntoma):

#include "stm32f1xx.h"

void delay(void);

void main(void)
{
  // I/O port C clock enable
  RCC->APB2ENR = RCC_APB2ENR_IOPCEN;
  // Set PC_12 to output
  GPIOC->CRH &= ~(GPIO_CRH_MODE12 | GPIO_CRH_CNF12);
  GPIOC->CRH |= GPIO_CRH_MODE12;

  while(1)
  {
    GPIOC->BSRR = (1<<12);
    delay();
    GPIOC->BRR = (1<<12);
    delay();
  }
}

void delay(void)
{
  volatile unsigned int i;
  for (i = 0; i < 20000; i++);
}

El Pin C12 hace lo que pretendo para esta prueba simple. ¿Qué debo hacer para que detenga la actividad TMS / TDI?

pregunta lateral; el .bin generado por System Workbench STM32, ¿incluye todo lo que se necesita? Aka la HAL?

    
pregunta AlexanderBrevig

1 respuesta

0

Evito usar los pines JTAG y SWD como pines de E / S porque necesitan programarse activamente para que sean pines de E / S.

No puedo ver el código haciendo eso, por lo que es probable que esos pines no funcionen como GPIO.

Obtenga una copia del manual 'RM0008 Reference manual' de ST.

En la sección '9.3.5 Reasignación de funciones alternativas de JTAG / SWD', se explica cómo asignar los pines SWD y JTAG para que se conviertan en pines GPIO normales. Tabla '37. La asignación de puertos de depuración 'explica qué valores establecer en los bits SWJ _CFG en el registro AFIO + MAPR para asignar esos pines JTAG / SWD a GPIO.

Por ejemplo, si los bits SWJ_CFG se establecen en 100, todos los pines JTAG y SWD están disponibles para GPIO.

Te animo a evitar esto. Al menos no asigne los pines SWD, por lo que es más fácil depurar su tablero.

También puede accederse a algunos de los pines SWD desde un depurador externo (dependiendo del software que lo maneja) mientras está conectado, y esto también puede ser causa de suficiente actividad para encender los LED de forma tenue.

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas