Tutorial de introdução ao STM32CubeIDE

Índice

STM32CubeIDE software

Para melhorar a facilidade de uso da família STM32 de microcontroladores, rica em recursos e com baixo consumo de energia, em 2019 a ST adicionou uma ferramenta de desenvolvimento STM32 multifuncional e gratuita ao ecossistema de software STM32Cube: o STM32CubeIDE.

Para funcionar tão bem quanto as ferramentas comerciais de ambiente de desenvolvimento integrado (IDE), o STM32CubeIDE aproveita ao máximo a tecnologia da Atollic®, um fornecedor de ferramentas de desenvolvimento incorporadas adquirido pela STMicroelectronics em 2017. Usando termos de licenciamento abertos padrão da indústria, este software IDE adiciona recursos específicos do STM32 para simplificar e acelerar projetos embarcados baseados no STM32, incluindo poderosas ferramentas de configuração de microcontroladores STM32CubeMX e gerenciamento de projetos.

Ao integrar o STM32CubeMX com o STM32CubeIDE, a ST criou um ambiente de desenvolvimento mais poderoso. O ecossistema STM32Cube completo também inclui o gravador de código STM32CubeProgrammer e a família STM32CubeMonitor de monitores de execução de código, bem como vários pacotes de firmware MCU independentes.

O que é o STM32CubeIDE?

O STM32CubeIDE é uma ferramenta oficial gratuita de desenvolvimento de software da ST, baseada na estrutura Eclipse®/CDT, na cadeia de ferramentas de compilação GCC e na ferramenta de depuração GDB, e suporta a adição de plug-ins funcionais de terceiros. Ao mesmo tempo, o STM32CubeIDE integra algumas das funcionalidades do STM32CubeMX e do STM32CubeProgrammer.

Com o STM32CubeIDE, os desenvolvedores podem fazer tudo, desde a seleção do chip, configuração do projeto, geração de código, até a edição, compilação, depuração e gravação do código.

STM32Cube software ecosystem
STM32Cube software ecosystem

Recursos do STM32CubeIDE

1. Integrar STM32CubeMX:

  • Seleção do microcontrolador STM32
  • Atribuições de pinos, relógios, configuração de IP e middleware
  • Criação de projetos e geração de código de inicialização

2. Baseado em Eclipse/CDT, suporte a plug-ins Eclipse, uso da cadeia de ferramentas ARM e depurador GDB em GNU C/C++.

3. Outras funções avançadas de depuração:

  • Núcleos da CPU, registros IP e visualizações de memória
  • Visualização de variáveis em tempo real
  • Análise do sistema e rastreamento em tempo real (SWV)
  • Ferramenta de análise de falhas da CPU

4. Suporte para sonda de depuração ST-LINK e J-Link

5. Suporte à importação de projetos do TrueSTUDIO e AC6 (SW4STM32)

6. Suporte ao sistema operacional: Windows, Linux e MacOS

Download do STM32CubeIDE

Área de trabalho STM32CubeIDE

O STM32CubeIDE é uma estrutura baseada no Eclipse que herda algumas das funcionalidades do Eclipse que não são familiares aos utilizadores, tais como vistas em perspectiva, espaços de trabalho, etc.

Área de trabalho: O STM32CubeIDE gerencia projetos por meio da área de trabalho. Ao abrir o STM32Cube, ele cria uma nova área de trabalho padrão. O projeto novo ou importado pertencerá a essa área de trabalho. Os projetos na mesma área de trabalho têm a mesma configuração no nível do IDE (definida em Janela→Preferências), como as configurações de exibição e estilo de edição. Do ponto de vista do sistema de arquivos, um espaço de trabalho é uma pasta que contém várias pastas de projetos e uma pasta chamada ".metadata", que contém informações sobre todos os projetos nesse espaço de trabalho. A pasta ".metadata" contém informações sobre todos os projetos no espaço de trabalho. O usuário pode alternar entre espaços de trabalho através do menu Arquivo→Alternar Espaço de Trabalho.

Perspectiva: uma perspectiva é uma série de janelas relacionadas a um determinado tipo de função. As mais comumente usadas são Perspectiva de edição C/C++, Perspectiva de depuração e Perspectiva de configuração CubeMX.

STM32CubeIDE Perspective
STM32CubeIDE Perspective

A Perspectiva de Edição C/C++ inclui o Gerenciador de Projetos, a Janela de Edição, a Janela de Esboço e assim por diante. O Gerenciador de Projetos permite visualizar e manipular todos os projetos na área de trabalho atual. Clique duas vezes para abrir um arquivo no projeto, e o conteúdo do arquivo será exibido na janela de Edição, onde você poderá editá-lo. A janela de Esboço, à direita, lista todas as funções, variáveis e macros definidas no arquivo atualmente aberto.

O menu Mostrar Vista da Janela permite abrir e fechar as janelas que precisam ser exibidas na perspectiva de edição C/C++.

Você pode alternar entre diferentes visualizações de perspectiva usando os ícones no canto superior direito. Por exemplo, clicando no ícone do rastreador, você pode alternar para a visualização de perspectiva de depuração. Clicar no botão Debug na barra de ferramentas abaixo da visualização C/C++ Edit Perspective também alternará automaticamente para a visualização Debug Perspective após iniciar a depuração.

Como usar o STM32CubeIDE?

1. Gestão de projetos

Criar um novo projeto

Usando o STM32CubeIDE, os usuários podem iniciar um novo projeto de várias maneiras. A tela de boas-vindas do STM32CubeIDE lista os pontos de entrada de atalho para criar/importar um projeto, correspondentes aos quatro cenários abaixo. As funções correspondentes também podem ser implementadas através de Novo e Importar no menu Arquivo.

  1. Criar um novo projeto STM32 do zero
  2. Já existe um arquivo de configuração STM32CubeMX (*.ioc) e você deseja criar um novo projeto STM32 com base nesse arquivo ioc.
  3. Já tenho um projeto SW4STM32 ou TrueSTUDIO e desejo convertê-lo em um projeto STM32CubeIDE.
  4. Criar um novo projeto com base nas rotinas da biblioteca STM32Cube
STM32CubeIDE New Project
STM32CubeIDE New Project

Estrutura do projeto STM32CubeIDE

O STM32CubeIDE tem duas estruturas de projeto, conforme mostrado na figura a seguir.

STM32CubeIDE project structure diagram
STM32CubeIDE project structure diagram

Os MCUs single-core são estruturas planas.

Para MCUs com arquitetura dual-core ou MCUs de segurança, como as séries STM32H7, STM32L5 e STM32MP1, o projeto STM32CubeIDE é uma estrutura hierárquica. Tomando o STM32H7 como exemplo, após criar ou importar um projeto STM32H7, você verá uma estrutura de projeto de três camadas na barra do Project Explorer: a camada superior é o projeto "raiz", depois há dois projetos "filhos" correspondentes aos núcleos CM7 e CM4, respectivamente. A camada superior é o projeto "raiz", depois há dois projetos "filhos" correspondentes aos kernels CM7 e CM4, e os arquivos do projeto estão nos projetos "filhos". Esses dois projetos "filhos" CM7 e CM4 são os projetos reais compiláveis e depuráveis, enquanto o projeto "raiz" é apenas um "contêiner" que contém os projetos "filhos" CM7 e CM4. AN5361, AN5394, AN5360 e AN5564 descrevem como criar, importar, compilar e depurar projetos STM32H7 dual-core, STM32L5, STM32MP1 e STM32WL, respectivamente, no STM32CubeIDE.

Gerenciamento da biblioteca de firmware

O STM32CubeIDE integra algumas das funcionalidades do STM32CubeMX, permitindo-lhe gerar um novo projeto selecionando diretamente o modelo do chip/placa de desenvolvimento ou selecionando uma rotina. O código do controlador e da rotina necessários para gerar um projeto com o STM32CubeIDE provém das bibliotecas de firmware de cada família STM32.

Em Ajuda→Gerenciar pacotes de software incorporados, todas as bibliotecas de firmware STM32 e outros plug-ins podem ser gerenciados (instalar/remover bibliotecas de firmware).

O botão Instalar agora permite que o STM32CubeIDE baixe e instale automaticamente a partir da rede, e o botão Do local permite instalar bibliotecas de firmware pré-baixadas.

O botão Remover agora permite remover a biblioteca de firmware selecionada.

STM32CubeIDE firmware library
STM32CubeIDE firmware library

Na guia STM32Cube Firmware Updater da janela Window Preferences, você pode definir o caminho para a instalação da biblioteca de firmware e como atualizá-la.

STM32CubeIDE Firmware Preferences Setting
STM32CubeIDE Firmware Preferences Setting

Configuração de rede

Por padrão, o STM3CubeIDE tentará se conectar à rede ao abrir e criar um novo projeto. Você também pode escolher o "Modo Offline" para impedir que o STM32CubeIDE se conecte à rede. No entanto, você precisa instalar as bibliotecas de firmware pré-baixadas através do botão "From Local" na janela "Embedded Software Packages Manager" na imagem anterior, caso contrário, o código não será gerado automaticamente para o novo projeto STM32.

Clique no botão Verificar conexão para verificar o status atual da conexão de rede. Se um x vermelho aparecer no final da verificação, significa que há um problema com a configuração de rede e precisamos ir para a página Conexão de rede para configurá-la.

Além da detecção do status da rede ativa anterior, se o download do firmware falhar, verifique também se a configuração de rede do STM32CubeIDE está correta.

As etapas de configuração são mostradas na figura a seguir:
1. Vá para o menu Preferências da janela e selecione a guia Conexões de
rede gerais 2. Selecione o método Manual
3. Selecione HTTP e clique duas vezes para abrir a janela de edição e definir os parâmetros de conexão de rede.

STM32CubeIDE Network Configuration
STM32CubeIDE Network Configuration

Abrir/Fechar/Excluir/Alternar/Exportar projetos STM32CubeIDE

Na janela Explorador de projetos, você pode ver todos os projetos na área de trabalho atual. Os usuários podem abrir/fechar/excluir/importar/exportar/renomear qualquer projeto nesta janela.

2. Compilação de código

Configuração e compilação de propriedades

Selecione um projeto no Explorador de Projetos, clique com o botão direito do mouse e acesse o menu de propriedades, onde você pode configurar os itens de compilação.

Depois que a configuração estiver concluída, o projeto estará pronto para ser compilado. Você pode iniciar a compilação de três maneiras:
– Método 1: selecione o projeto, clique com o botão direito do mouse sobre ele e selecione "Build Project" (Compilar projeto)
. – Método 2: selecione o projeto, acesse-o no menu Project (Projeto) e selecione "Build Project" (Compilar projeto).
– Método 3: selecione o projeto e clique no ícone Build (Compilar) na barra de ferramentas.

STM32CubeIDE project property configuration
STM32CubeIDE project property configuration

Melhorar a velocidade de compilação

Ao habilitar a compilação paralela, você pode melhorar a velocidade de compilação do STM32Cube IDE.
Selecione o projeto, clique com o botão direito do mouse e entre no menu de propriedades, selecione "C/C++ Build" e, na guia Behavior, marque o recurso "Enable parallel build".

STM32CubeIDE CC++ Build parallel compile
STM32CubeIDE CC++ Build parallel compile

Ferramentas auxiliares para compilação

Após a compilação do projeto, a janela "Build Analyzer" mostra o uso de todas as regiões e seções de memória definidas no arquivo de link, incluindo o endereço de carregamento, o endereço de execução, quantos bytes estão ocupados, quantos bytes restantes, etc. etc.

A janela "Static Stack Analyzer" mostra o uso da pilha estática.

O STM32CubeIDE também oferece um recurso de compilação sem interface gráfica, que permite compilar a partir da linha de comando sem abrir a GUI do CubeIDE.

3. Depuração e gravação de código

Configuração de depuração e execução

Depois que o projeto STM32CubeIDE for compilado sem erros, ele estará pronto para depuração e download.

Na barra de ferramentas da Perspectiva C/C++, há três botões relacionados ao download e à depuração: Depurar, Executar e Ferramentas externas.

O pequeno triângulo ao lado do botão "Debug" abre o menu Debug Configurations (Configurações de depuração) para configurar os parâmetros de depuração, como seleção do depurador, configurações de conexão GDB, configurações ST-LINK, configurações do Flash Loader externo, etc., e para iniciar a depuração.

Com o botão "Executar", você pode baixar o programa sem iniciar a depuração.

O botão "Ferramentas externas" permite invocar ferramentas externas de linha de comando.

STM32CubeIDE Code Debugging
STM32CubeIDE Code Debugging

Iniciar depuração

O STM32CubeIDE usa o GDB para depuração, suporta os depuradores STLink e SEGGER J-Link e suporta a conexão com o MCU de destino através da interface SWD ou JTAG.

Após a compilação do projeto STM32CubeIDE, a depuração pode ser iniciada diretamente clicando no ícone do rastreador na barra de ferramentas ou selecionando o menu Executar–>Depurar.

STM32CubeIDE Start Debugging
STM32CubeIDE Start Debugging

Se for a primeira vez que você depura o projeto atual, o STM32CubeIDE primeiro compilará o projeto e, em seguida, abrirá a janela de configuração de depuração. A janela de configuração de depuração contém opções para seleção da interface de depuração, configurações do STLink, configurações de reinicialização e configurações do carregador flash externo, etc. Os usuários podem verificar ou modificar as configurações. Após confirmar que todas as configurações estão corretas, você pode clicar em OK para iniciar a depuração.

Em seguida, o STM32CubeIDE baixará primeiro o programa para o MCU e, em seguida, iniciará a execução a partir da entrada do programa especificada no arquivo de link (*.ld). O programa inicia a execução a partir do Reset_Handler por padrão e pausa na primeira linha da função principal, aguardando a próxima instrução de depuração.

Operações básicas de depuração

Após iniciar a depuração, o STM32CubeIDE mudará automaticamente para a visualização da perspectiva de depuração, e os botões de operação de depuração serão listados na barra de ferramentas da visualização da perspectiva de depuração. Conforme mostrado na figura abaixo.

Basic debugging operation of STM32CubeIDE
Basic debugging operation of STM32CubeIDE

4. Utilização de plugins

O STM32CubeIDE também suporta plugins Eclipse. Existem duas formas de os instalar:

  1. Instalação pelo "Eclipse Marketplace" no menu Ajuda;
  2. Instalação pelo "Install New Software" no menu "Help".
STM32CubeIDE plugins Installing
STM32CubeIDE plugins Installing

Exemplo de programação STM32CubeIDE

Vamos experimentar o processo de desenvolvimento de software usando o STM32CubeIDE através de uma rotina de luz LED intermitente.

A rotina usa a placa de desenvolvimento NUCLEO-H743ZI e cria um novo projeto do zero através do STM32CubeIDE. O projeto então implementa uma função simples: o LED1 integrado acende automaticamente em intervalos de 500 ms.

O que podemos aprender com este exemplo de programação é o seguinte:

  • Criar um novo projeto STM32CubeIDE
  • Configurar o chip STM32
  • Adicionar código do usuário e compilar
  • Definir parâmetros de depuração
  • Depurar o código (visualizar variáveis e registros)
  • Definir pontos de interrupção

Primeiro, selecione Arquivo–>Novo–>Projeto STM32, o STM32CubeIDE abrirá a janela de seleção do MCU. Nesta janela, você pode selecionar um determinado modelo de chip ou uma determinada placa de desenvolvimento ou rotina ST. Aqui, digitamos STM32H743ZI na caixa de pesquisa, você pode selecionar diretamente este chip e, em seguida, clicar em Avançar.

Create STM32CubeIDE New Project and Select STM MCU model
Create STM32CubeIDE New Project and Select STM MCU model

Na próxima janela pop-up, você precisa definir o nome, o tipo e o local do projeto para salvá-lo. Por padrão, o novo projeto será salvo na área de trabalho atual, mas você também pode desmarcar "Usar local padrão" e personalizar o local do projeto, conforme mostrado abaixo. Observe que, se você tentar colocar dois projetos no mesmo caminho, poderá ocorrer um erro durante o processo de criação posteriormente. Portanto, você pode adicionar o nome do projeto ao caminho para distinguir os diferentes projetos.

Após a configuração, clique em Concluir e o STM32CubeIDE criará um projeto para nós e abrirá a interface de configuração do chip, que é a mesma do STM32CubeMX.

Durante esse tempo, você pode receber um pop-up informando que abrirá a perspectiva de configuração do CubeMX. Clique em Sim e pronto.

STM32CubeMX Configuration Perspective
STM32CubeMX Configuration Perspective

A próxima coisa a fazer é configurar o relógio, GPIO, periféricos, middleware, etc., de acordo com os requisitos funcionais na tela de configuração do chip. Nesta rotina, usamos apenas PB0, que é usado como saída para controlar LED1, então só precisamos configurá-lo. O relógio usa apenas a configuração padrão.

Na visualização Pinout, o pino a ser configurado pode ser encontrado rapidamente no diagrama do pacote do chip usando a barra de pesquisa.

Selecione o pino, clique com o botão direito do mouse sobre ele e selecione a função GPIO_Output.

Em seguida, vá para a visualização System, clique no módulo GPIO e você poderá ver o pino PB0 que acabou de configurar. Esta janela também permite continuar ajustando outros parâmetros do PB0, como pull-up/down, velocidade, etc. Também é possível definir um rótulo de usuário LDE1 para ele, que é fácil de referenciar no código.

Configure GPIOs on Create STM32CubeIDE
Configure GPIOs on Create STM32CubeIDE

Depois de concluir toda a configuração, selecione Project–>Generate Code (Projeto–>Gerar código) para regenerar o código. Nesse momento, o STM32Cube muda para a visualização em perspectiva C/C++ e você pode adicionar o arquivo do usuário ou fazer alterações em um arquivo C.

Aqui, adicionamos um trecho de código que inverte PB0. Observe que todo o código adicionado pelo usuário deve ser colocado entre as declarações "USER CODE BEGIN xxx" e "USER CODE END xxx". Dessa forma, quando o código for gerado novamente, essa parte do código não será perdida.

Após adicionar o código, clique em "Build" para iniciar a compilação.

Generate Code and Compile Project
Generate Code and Compile Project

Se a compilação estiver concluída e não houver erros relatados, você pode clicar em Depurar para iniciar a depuração.

Na primeira vez que você iniciar a depuração, uma janela de configuração dos parâmetros de depuração será exibida. Certifique-se de que todos os parâmetros estejam corretos, clique em OK e o STM32CubeIDE mudará automaticamente da interface de edição para a interface de depuração. Conforme mostrado na figura abaixo.

Na interface de depuração, você pode depurar em uma única etapa usando os botões de ação na barra de ferramentas.

Clique duas vezes na barra de marcador mais à esquerda de uma linha de código para adicionar um ponto de interrupção nessa linha de código.

Várias janelas de depuração são abertas no lado direito, incluindo: variáveis locais, pontos de interrupção, variáveis globais e registros, etc. Essas janelas podem ser abertas ou fechadas no menu Janela–>Mostrar Vista.

STM32CubeIDE Debug Code
STM32CubeIDE Debug Code

STM32CubeIDE vs STM32CubeMX

O STM32Cube IDE é um Ambiente de Desenvolvimento Integrado (IDE) para o desenvolvimento de aplicações em microcontroladores STM32. Baseado na plataforma Eclipse, o STM32Cube IDE integra o STM32CubeMX, depuradores, editores, compiladores e outras ferramentas, proporcionando aos desenvolvedores um ambiente abrangente. O STM32Cube IDE oferece recursos de depuração, controle de versão, edição de código e compilação, permitindo que os desenvolvedores concluam todo o processo de desenvolvimento em uma interface unificada.

O STM32CubeMX é uma ferramenta de configuração gráfica projetada para inicializar microcontroladores STM32 e gerar código de inicialização. Ele oferece uma interface intuitiva que permite aos usuários selecionar modelos de microcontroladores, configurar periféricos, mapeamentos de pinos e gerar o código de inicialização correspondente. O STM32CubeMX também pode gerar arquivos de configuração FreeRTOS, configurar a árvore de clock e definir prioridades de interrupção. O código gerado pode ser integrado a vários Ambientes de Desenvolvimento Integrado (IDEs), como Keil ou IAR, para desenvolvimento adicional de aplicativos.

FeatureSTM32CubeMXSTM32Cube IDE
PurposeConfiguration tool for STM32 MCUsFull IDE for application development
FunctionalityInitializes MCUs, configures peripherals, generates codeCode writing, debugging, building, and compiling
PlatformStandalone, integrates with Keil, IARBuilt on Eclipse, integrates CubeMX, debugging tools
Code GenerationGenerates initialization code for external IDEsDevelops and compiles applications directly
User InterfaceGraphical interface for configurationFull IDE with editing and debugging tools
Use CaseSet up peripherals and generate base codeWrite, build, and debug applications

Perguntas frequentes sobre o STM32CubeIDE

O STM32CubeIDE pode gerar arquivos BIN ou HEX após a compilação?

Por padrão, o STM32CubeIDE gera arquivos ELF após a compilação. No entanto, ele também suporta a geração de arquivos HEX ou BIN. O processo de configuração é o seguinte: Vá para o menu principal Project > Properties > C/C++ Builde abra as configurações onde você pode definir o formato de saída.

generating BIN or HEX files by STM32CubeIDE
Generating BIN or HEX files by STM32CubeIDE

Sim, com certeza. O STM32CubeIDE integra o STM32CubeMX como um módulo dentro do seu ambiente de desenvolvimento. Ao criar um novo projeto no CubeIDE, o STM32CubeMX é automaticamente invocado para permitir que os usuários realizem configurações gráficas de inicialização.

Pode haver várias razões pelas quais o STM32CubeIDE não está gerando código:

  • Certifique-se de que o STM32CubeMX esteja devidamente integrado e invocado durante a criação do projeto.
  • Verifique se você configurou corretamente o microcontrolador e seus periféricos no STM32CubeMX antes de tentar gerar o código.
  • Verifique as configurações na Project > Properties , especialmente as opções de geração de código.
  • Certifique-se de que não há erros ou configurações ausentes que possam impedir a geração do código.

Inscreva-se

Inscreva-se na nossa lista de assinantes para receber atualizações mensais do blog, notícias sobre tecnologia e estudos de caso. Nunca enviaremos spam e você pode cancelar a assinatura a qualquer momento.

Sobre o autor

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Precisa de ajuda?

Rolar para cima

Instant Quote