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:
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].
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].
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].
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.
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>© 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.
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.











Muito bom.
Cristiano, obrigado pela atenção e legal que gostou.