Usando o STM32CubeIDE criaremos nosso projeto Hello World

Nesse artigo vamos usar o STM32CubeIDE para criars nosso projeto Hello World para o STM32 F103C8T6. Veja como é fácil dar os primeiros passos na plataforma.

Esse é o terceiro artigo de uma nova série escrita pelo engenheiro Ismael Lopes da Silva, exclusivamente para o Portal Embarcados.  Nessa série focarei no Microcontrolador da STMicroelectronics, o MCU STM32F103C8T6, que é um ARM Cortex-M3. Os pré-requisitos para uma boa compreensão dos artigos é ter o domínio da Linguagem C Embedded e conceitos de eletrônica.

Usando o STM32CubeIDE criaremos nosso projeto Hello World

Inicie a ferramenta de desenvolvimento da STMicroelectronics, o STM32CubeIDE. Criaremos um novo diretório como workspace, conforme mostrado a seguir:

STM32CubeIDE
Figura 1 – Selecionando um workspace

Clique no botão [Launch] para iniciar o programa.

Conforme ilustrado na figura 2, para iniciar um novo projeto STM32, na janela “Information Center” selecione a opção [Start new STM32 project] ou feche a janela “Information Center”, e no menu [File] selecione [New] e depois [STM32 project].

STM32CubeIDE
Figura 2 – Start new STM32 project

Depois a janela do seletor do dispositivo target será mostrada, conforme ilustrado na figura 3. Aqui você pode selecionar uma placa de desenvolvimento (board), ou um MCU. O dispositivo target é a placa, kit de desenvolvimento ou MCU que vamos trabalhar. Vamos selecionar o MCU STM32F103C8, e clicar no botão [Next].

STM32CubeIDE
Figura 3 – Seletor do Target

Na janela de configuração do projeto, conforme ilustrado na figura 4, demos um nome ao projeto “01HelloWorld”, então, selecione todas as opções conforme ilustrado, e clique no botão [Finish].

STM32CubeIDE
Figura 4 – Nome do projeto

Na figura 5 podemos ver que o projeto “01HelloWorld” foi criado, e é um projeto vazio, portanto, tem toda a estrutura para funcionar, porém, ainda não tem uma aplicação de fato.

STM32CubeIDE
Figura 5 – Projeto “01HelloWorld” vazio

Segue o conteúdo do arquivo main.c, que não faz nada, a não ser entrar num loop infinito, porém, o que a princípio estamos verificando é se a ferramenta de desenvolvimento se comporta normalmente. 

/********************************************************************************
 * @file           : main.c
 * @author         : Auto-generated by STM32CubeIDE
 * @brief          : Main program body
 ******************************************************************************
 * @attention
 *
 * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
 * All rights reserved.</center></h2>
 *
 * This software component is licensed by ST under BSD 3-Clause license,
 * the "License"; You may not use this file except in compliance with the
 * License. You may obtain a copy of the License at:
 *                        opensource.org/licenses/BSD-3-Clause
 *
 *******************************************************************************/

#if !defined(__SOFT_FP__) && defined(__ARM_FP)
  #warning "FPU is not initialized, but the project is compiling for an FPU. Please initialize the FPU before use."
#endif

int main(void)
{
    for(;;);
}

Compilando o Projeto no STM32CubeIDE

Para compilarmos o projeto, então, na janela “Project Explorer”, clique com o botão direito do mouse sobre o nome do projeto “01HelloWorld” e selecione a opção “Build Project”. Portanto, na janela “Console” as seguintes mensagens serão visualizadas, informando que está correto.

18:34:55 **** Build of configuration Debug for project 01HelloWorld ****
make -j4 all 
arm-none-eabi-gcc -mcpu=cortex-m3 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfloat-abi=soft -mthumb -o "Startup/startup_stm32f103c8tx.o" "../Startup/startup_stm32f103c8tx.s"
arm-none-eabi-gcc "../Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DSTM32 -DSTM32F1 -DSTM32F103C8Tx -DDEBUG -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/main.d" -MT"Src/main.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Src/main.o"
arm-none-eabi-gcc "../Src/syscalls.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DSTM32 -DSTM32F1 -DSTM32F103C8Tx -DDEBUG -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/syscalls.d" -MT"Src/syscalls.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Src/syscalls.o"
arm-none-eabi-gcc "../Src/sysmem.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DSTM32 -DSTM32F1 -DSTM32F103C8Tx -DDEBUG -c -I../Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/sysmem.d" -MT"Src/sysmem.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Src/sysmem.o"
arm-none-eabi-gcc -o "01HelloWorld.elf" @"objects.list"   -mcpu=cortex-m3 -T"D:\STM32CubeIDE\MyWorkspace\target\01HelloWorld\STM32F103C8TX_FLASH.ld" --specs=nosys.specs -Wl,-Map="01HelloWorld.map" -Wl,--gc-sections -static --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
Finished building target: 01HelloWorld.elf
arm-none-eabi-size   01HelloWorld.elf 
arm-none-eabi-objdump -h -S  01HelloWorld.elf  > "01HelloWorld.list"
arm-none-eabi-objcopy  -O binary  01HelloWorld.elf  "01HelloWorld.bin"
   text       data        bss        dec        hex    filename
    556          8       1568       2132        854    01HelloWorld.elf
Finished building: default.size.stdout
Finished building: 01HelloWorld.bin
Finished building: 01HelloWorld.list
18:34:57 Build Finished. 0 errors, 0 warnings. (took 1s.891ms)

Depurando o Projeto

Para depurarmos o projeto, então, na janela “Project Explorer”, clique com o botão direito do mouse sobre o nome do projeto “01HelloWorld” e selecione a opção “Debug As” e “STM32 Cortex-M C/C++ Application”. Portanto, na janela “Confirm Perspective Switch” será visualizada. Clique no botão [Switch] para abrir a perspective de depuração.

Figura 6 – Perspectiva de depuração

Conforme ilustrado na figura 7, o modo de depuração foi ativado. Como temos um projeto vazio, apenas a linha do loop infinito está em destaque, mostrado que estamos depurando. Por enquanto, estamos apenas verificando o comportamento do STM32CubeIDE, o ST LINK V2 e o MCU target (STM32F103C8T6). Para encerrar o modo de depuração pressione as teclas [CTRL+F2]. A figura 8 ilustra as configurações do depurador, usando o ST-LINK GBD Server.

Figura 7 – Modo de depuração ativo

Figura 8 – Configuração do Debug

Saiba Mais

STM32CubeIDE: Primeiros passos e CMSIS Core com GPIO

Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Cristiano dos Santos Araujo
Cristiano dos Santos Araujo
06/02/2021 13:10

Muito bom.

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H