STM32 com IDE Arduino: Primeiros Passos 26

A família de microcontroladores STM32 da STMicroelectronics é projetada para aplicações real-time, baixo consumo de energia, processamento digital de sinais e conectividade. São Microcontroladores de 32-bit e arquitetura ARM® Cortex®-M. Em comparação com a placa Arduino, o STM32 é mais potente embora a curva de aprendizado seja bem maior. Mas como o Arduino e sua IDE são muito disseminados, já existe um suporte para programação de STM32 através da IDE Arduino. Veja na leitura deste post como utilizar STM32 com IDE Arduino.  

Comparação Atmega328p e STM32F103C8T6

Veja abaixo uma pequena tabela comparativa entre algumas características e recursos do STM32 e Atmega328:

Tabela comparativa ATmega328p STM32

Para ir mais a fundo nessa comparação deixo alguns links de datasheet e artigos que podem ajudar:

Datasheet STM32
Datasheet ATmega328
Artigo comparativo Digikey

Já o nível de facilidade para se começar a trabalhar com as duas plataformas é bem diferente. O Arduino já muito disseminado e possui diversos tutoriais na internet. Embora o STM32 seja mais complexo também é possível ter os primeiros passos facilitados através da IDE Arduino.

Configurando a IDE Arduino para STM32

O desenvolvedor Roger Clark desenvolveu uma extensão para IDE Arduino que dá suporte a algumas placas genéricas com STM32, inclusive a Blue Pill, que é vendida na MakerHero. Entre no repositório da extensão e baixe ou clone em seu computador.

https://github.com/rogerclarkmelbourne/Arduino_STM32

A pasta Arduino_STM32 deverá estar na pasta Arduino->hardware do seu sistema operacional. No caso do meu sistema Linux copiei a pasta para /home/giobauermeister/Arduino/hardware.

Estrutura de pastas Arduino

Assim, quando a IDE iniciar, irão aparecer as plataformas de STM32 disponíveis na IDE Arduino.

Conectando a placa com gravador para STM32

O gravador compatível com a placa STM32 serve tanto para carregar firmware como para debugar código. A parte de debug iremos ver em futuros tutoriais.

Gravador STM32 com IDE Arduino

Conecte o gravador na interface SWD(Serial Wire debugging) da placa STM32 como mostrado na ilustração abaixo:

Conexão gravador com STM32

Verifique corretamente os nomes dos pinos impressos tanto no gravador como na placa. Caso a ordem esteja diferente da figura acima, conecte de acordo.

Não é necessário conectar o cabo micro-USB pois o gravador já alimenta a placa adequadamente para gravação.

Após feita a conexão acima conecte o gravador na porta USB do computador.

Selecionando a placa STM32 com IDE Arduino

Abra a IDE Arduino e vá no menu Ferramentas -> Placa -> Generic STM32F103C e no menu Ferramentas -> Upload method -> STLink.

Menu seleção de placa

 

Menu modo upload

Abra o exemplo Blink LED padrão do Arduino e faça apenas uma modificação colocando “PC13” no lugar de “LED_BUILTIN”, assim iremos piscar o LED 13 embutido na placa STM32.

Se tudo der certo o LED 13 irá piscar como abaixo:

LED Piscando STM32

Este tutorial foi apenas uma introdução básica com os primeiros passos utilizando a placa Blue Pill STM32 com IDE Arduino. Recomendamos também que você baixe o livro Descobrindo o Microcontrolador STM32, que contém várias outras informações sobre o STM32, exemplos de uso, dicas e muito mais!

Nos próximos tutoriais iremos explorar mais sobre STM32. Iremos gravar um bootloader que possibilita carregar programas através do micro USB e também utilizaremos algumas ferramentas do fabricante STMicroelectronics. Fique ligado!

 

Faça seu comentário

Acesse sua conta e participe

26 Comentários

  1. Faltou explicar porque não aparece no meu Arduino 1.8.5 o STM 32 em ferramentas…fiz igual ao tutorial mas não aparece nada d

    1. Bismarck,

      Tente trocar de versão da IDE.

      Abraços!
      Diogo – Equipe MakerHero

  2. Boa noite, tem como gravar bootloader no stm 32 através do arduino uno? se tiver, poderia passar uma orientação? eu não tenho o St-Link, Obrigado.

  3. Na IDE Arduino tem como colocar o STM32 num clock baixo, exemplo 1 MHz ?

  4. Quando vou gravar, Tem dois jampers:
    Boot 0
    Boot 1
    Qual devo selecionar no momento do bootloader?
    Desde já agradeço!!!

  5. Ola, muito bom essa explicação, quero gravar via USB, tem como ?

  6. Não sei nem se pode posta link de outros sites aqui mais alguém por gentileza poderia me dizer como modifica esse código para usa em um STM32 em vez de um UNO como e a compilação original ?

    https://simple-circuit.com/arduino-ssd1306-oled-ds3231-rtc/

    OBS: Quero mudar apenas o UNO colocando um STM32 o resto permanese o mesmo como display e RTC

    1. João,

      Você precisa fazer algumas coisas:
      1. Procurar as bibliotecas utilizadas para que possa ser utilizada no STM32;
      2. Verificar a nomenclatura dos pinos para que fique como as do STM32.

      Abraços!
      Diogo – Equipe MakerHero

  7. não esta encontrando o arquivo exec: “/bin/arm-none-eabi-g++”
    diz que não existe

    este arquivo esta em arquivo de programa x86
    gnu tools Arm Embedded
    9-2019-q4-major
    bin
    arm -none-eabi-g++

    Este relatório teria mais informações com
    “Mostrar a saida detalhada durante a compilação”
    opção pode ser ativada em “Arquivo -> Preferências”

    1. Benedito,

      Esse é o erro inteiro?

      Abraços!
      Diogo – Equipe MakerHero

  8. Boa noite, eu comecei a estudar uma placa da STM, mas não é essa, é a STM32f407VET6, mas eu não achei muito material sobre ela, e quando eu conecto ela na USB aparece :
    Falha em uma solicitação de descritor de dispositivo USB. Eu já instalei os drivers pelo site da STM, você sabe o que pode ser?

    1. Bruno,

      Experimente esse link: https://github.com/mcauser/MCUDEV_DEVEBOX_F407VET6

      Abraços!
      Diogo – Equipe MakerHero

  9. Olá! Caro Giovanni! Poderia me ajudar, estou procurando um microcontrolador pode ser da familia STM ou outo que consiga fazer calculo complexo: como deriva, integral, aplicação de filtro Kalman, filtro complementar?
    Grato

  10. Não consigo usar os pinos PA15, PB3, PB4, PB5

    1. Julio,

      Preciso que você detalhe mais o que está acontecendo com sua STM32. O que ocorre para você não conseguir usar?

      Abraços!
      Diogo – Equipe MakerHero

    2. coloca isso no código do arduino que vai funcionar

      afio_cfg_debug_ports(AFIO_DEBUG_SW_ONLY);

      1. Que belezinha….
        Onde?
        No setup()
        No loop()
        Depois dos “//”s???

        “Esta cada vez mais dificí”…

        1. Adicione dentro do setup()

          Abraços!
          Diogo – Equipe MakerHero

  11. Como você conseguiu, no IDE Arduino, chegar em Ferramentas -> Placa -> Generic STM32F103C. O IDE que eu tenho 1,8,8 não tem este item.

    1. Olá Nei!

      Essa parte eu expliquei na seção “Configurando a IDE Arduino para STM32” do tutorial.

      Tente seguir os passos e veja se funciona para você.

      1. Sou diretor da empresa federal sistemas Gostaria de
        Uma consultoria em um projeto que estamos usando o stm32

        1. Olá Walisson! Envie um e-mail para [email protected] que podemos conversar e avaliar uma possibilidade de consultoria.

          Giovanni

    2. Fiz todo o passo a passo mas por algum motivo está dando o Erro “No Stlink detected”.

      1. Olá, Mateus

        Verifique se está tudo conectado certinho e com todas as placas instaladas.

        Abraços!
        Diogo – Equipe MakerHero

      2. Na IDE Arduino tem como colocar o STM32 num clock baixo, exemplo 1 MHz ?