Pular para o conteúdo principal

Laboratório 09

Documentação de Apoio para Atividade de Laboratório

A documentação desta atividade de laboratório é complementar a documentação principal da disciplina.

Utilize como base a descrição apresentada no Moodle da disciplina.

TarefaTemplateInícioFimConteúdo
LAB09TPL0925-May-202601-Jun-2026Uso do STM32CubeMonitor; InfluDB;

Conteúdo

Introdução ao uso do PlatformIO;

  • Crie um perfil no Visual Studio Code chamado STM32IO;
  • Instale o PlatformIO IDE for VSCode;
  • Configure o Visual Studio Code;
  • Configure o PlatformIO Core;
  • Edite a variável de ambiente Path e adicione %USERPROFILE%\.platformio\penv\Scripts\;
  • Instale os drivers for ST-LINK debug tool
  • Teste de geração e compilação de projeto para o STM32F411CEUx;

Verifique o seu ambiente de desenvolvimento

Git is the most widely used source-code management tool among professional developers.

  • Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
winget install --id Git.Git -e --source winget

Configurações do git:

git config --list --show-origin
Configure a ferramenta git

Configure o nome de usuário para todos os repositórios locais ligados às suas transações de commit:

git config --global user.name "Your Name"

Configure o email de usuário para todos os repositórios locais ligados às suas transações de commit:

git config --global user.email "you@example.com"

É recomendado verificar se a instalação do seu Git não está realizando nenhuma transformação entre LFs e CRLFs.

git config --global core.autocrlf false

Configure o git para usar o Visual Studio Code como editor padrão para tarefas como escrever mensagens de commit ou rebases interativos

git config --global core.editor "code --wait"

Habilite a coloração automática da saída da linha de comando do Git:

git config --global color.ui auto

Configura o Git para usar main como o nome do branch padrão sempre que você inicializar um novo repositório localmente:

git config --global init.defaultBranch main

Liste as configurações aplicadas:

git config --list --show-origin

STM32CubeMX is an initialization code generator.

  • STM32CubeMX is a graphical tool that allows a very easy configuration of STM32 microcontrollers and microprocessors, as well as the generation of the corresponding initialization C code for the Arm® Cortex®-M core or a partial Linux® Device Tree for Arm® Cortex®-A core, through a step-by-step process.

Crie um novo repositório com base no template do LAB09

Escolha o Grupo e entre com o comando abaixo para criar o repositório no GitHub:

Cole o comando abaixo no prompt aberto na pasta de trabalho!

Use o comando abaixo para criar o repositório no GitHub com base no template do laboratório LAB09:

gh repo create ELT73A-S22-2026-1-A/LAB09 --private -p ELT73A-LAB-TPL/LAB09 -c

Visualize o repositório:

gh repo view ELT73A-S22-2026-1-A/LAB09 --web

Abra o repositório clonado no VS Code:

code LAB09 --profile "STM32"

Instruções do LAB

Esta atividade de laboratório tem como objetivo utilizar o PlatformIO. Cada item equivale a 10% da nota.

  • Crie um perfil no Visual Studio Code chamado STM32IO;
  • Instale o PlatformIO IDE for VSCode;
  • Configure o Visual Studio Code;
  • Configure o PlatformIO Core;
  • Edite a variável de ambiente Path e adicione %USERPROFILE%\.platformio\penv\Scripts\;
  • Instale os drivers for ST-LINK debug tool
  • Envie o link do repositório no GitHub (hyperlink);

Avaliação

  • Uso do template e código - 20%
  • Verificação do PLatformIO - 70%
  • Link do repositório no GitHub (hyperlink) - 10%

Diagrama de pinos do STM32F4x1


STM32F4x1 microcontroller pinout diagram;


VS Code

Configuração do terminal

settings.json
{
"terminal.integrated.defaultProfile.windows": "PIO CLI",
"terminal.integrated.profiles.windows": {
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [],
"icon": "terminal-cmd"
},
"PIO CLI": {
"path": "cmd.exe",
"args": [
"/k",
"${env:USERPROFILE}\\.platformio\\penv\\Scripts\\activate.bat && pio --version"
],
"icon": "python",
"overrideName": true
}
}
}

STM32Cube HAL: debugging and unit testing

Pisca LED

Definição do pino no arquivo main.h

src/main.h
#ifndef MAIN_H
#define MAIN_H

#include "stm32f4xx_hal.h"

#define LED_PIN GPIO_PIN_13
#define LED_GPIO_PORT GPIOC
#define LED_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()

#endif // MAIN_H

Inicie LED_Init:

src/main.c
#include "main.h"

void LED_Init();

int main(void)
{
HAL_Init();
LED_Init();

while (1)
{
HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN);
HAL_Delay(1000);
}
}

void LED_Init()
{
LED_GPIO_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
}

void SysTick_Handler(void)
{
HAL_IncTick();
}
platformio.ini
[env:blackpill_f411ce]
platform = ststm32
board = blackpill_f411ce
framework = stm32cube
upload_protocol = stlink
debug_tool = stlink

Arduino

Inicie LED_Init:

src/main.c
#include <Arduino.h>

#ifndef LED_BUILTIN
#define LED_BUILTIN PC13
#endif

void setup()
{
// initialize LED digital pin as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
// turn the LED on (HIGH is the voltage level)
digitalWrite(LED_BUILTIN, HIGH);
// wait for a second
delay(1000);
// turn the LED off by making the voltage LOW
digitalWrite(LED_BUILTIN, LOW);
// wait for a second
delay(1000);
}

platformio.ini
[env:blackpill_f411ce]
platform = ststm32
board = blackpill_f411ce
framework = arduino
upload_protocol = stlink
debug_tool = stlink

Frameworks

NameDescription
ArduinoArduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences.
CMSISVendor-independent hardware abstraction layer for the Cortex-M processor series
LibOpenCM3The libopencm3 project aims to create an open-source firmware library for various ARM Cortex-M microcontrollers.
STM32CubeSTM32Cube embedded software libraries, including: The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls; The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency