SWD no STM32F103 com JLINK

SWD no STM32F103

No artigo anterior discorri sobre a configuração do JLINK genérico da Werneck Eletronics, que foi tema do “Laboratório Maker 08“. Bem, como visto no vídeo relacionado, não foi possível utilizado como SWD na RPi Pico porque ela faz multi-drop e esse recurso não é suportado por esse JTAG. Sugiro o vídeo, além de interessante, configurei o JLINK para utilizar no PlatformIO, portanto, ainda que não use VSCode mas utilize PlatformIO, poderá desfrutar do recurso e de quebra se divertir um pouco com o vídeo. Vale lembrar que tem dois modos de utilizar o JLINK e nesse vídeo usamos SWD no STM32F103, que ora se encontra como Mapple Mini, ora como BluePill.

Esse artigo é uma chamada para o novo vídeo, onde faço uso do JLINK com uma BluePill, para mostrar o upload e o debug com um mero blink e assistindo duas variáveis. Esse vídeo também é interessante, pois trato de uma maneira diferente de fazer o blink, mostro como esse modo se comporta, mostro o uso do FreeRTOS e as limitações no debug. Vale a pena assistir.

Código utilizado para testar SWD no STM32F103

O código é o mais simples possível para ficar claro o debug. Os códigos comentados serão explicados no vídeo.

#include <Arduino.h>
//#include <STM32FreeRTOS.h>

uint8_t counter = 0;

struct blinker{
  int stat :1;
} blkr;
/*

static void vBlink(void *pvParameters){
  while (true){
      vTaskDelay(250);
      blkr.stat += 1;
      digitalWrite(PC13,blkr.stat);
      counter++;
  }
  
}
*/
void setup() {
  pinMode(PC13,OUTPUT);
  //xTaskCreate(vBlink,"blink",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY + 3,NULL);
  //vTaskStartScheduler();
}

void loop() {
  //vTaskDelay(250);
  delay(500);
      blkr.stat += 1;
      digitalWrite(PC13,blkr.stat);
      counter++;
}

Repare no código do blink. Uma struct foi criada, contendo um inteiro chamado stat, que só recebe incremento. Como pode ocorrer o blink assim? Como essa variável se comporta, se só tem incremento? Reparou na forma que ela foi declarada dentro da struct? Todos esses detalhes são esclarecidos no vídeo “SWD no STM32F103”.

Parâmetros no platformIO

Por padrão a velocidade serial é 9600. Quando queremos definir o modo de upload (usando um JTAG, por exemplo), devemos especificar no arquivo platformio.ini. Para o JLINK devemos especificar o protocolo de upload e a ferramenta de debug. Não mudei a velocidade serial porque não utilizei serial, já que estamos fazendo o debug e ela passa a ser desnecessária nesse ponto, mas para qualquer projeto que você precise de serial e deseje uma velocidade como 115200, basta adicionar ao arquivo platformio.ini o parâmetro serial_speed = 115200. Para especificar o JLINK:

upload_protocol = jlink-swd
debug_tool = jlink

Salientando que jlink-swd é para utilizar SWD, que só utiliza os pinos SDIO e SCLK.

Vídeo

Assim que editado o vídeo estará disponível em nosso canal DobitaobyteBrasil no Youtube. Se não é inscrito, inscreva-se e clique no sininho para receber notificações.