Como usar o STM32 Blue Pill com a STM32Cube IDE

Neste post iremos mostrar como utilizar e programar o STM32 Blue Pill com a STM32Cube IDE. Para comprar esse produto em nossa loja, clique aqui. Veja mais informações do produto.

Informações gerais

O STM32 é uma placa de prototipagem eletrônica. Este sistema se baseia nos microcontroladores STM32F103, desenvolvidos pela empresa STMicroeletrics. O STM32 Bluepill apresenta um processador de 32 bits com arquitetura Cortex-M3 ARM são dispositivos de baixo custo e eficiência energética com até 2 DMIPS/MHz. Ideal para ser implementado em ambientes industriais, como processamento de imagem, aprendizado de máquina ou processamento de sinal digital.

Especificações técnicas

  • CI: STM32F103C8T6;
  • Núcleo: ARM 32 Cortex-M3;
  • Modo de Depuração: SWD;
  • Frequência Máxima de Trabalho: 72MHz;
  • Tamanho da Memória de Programa: 64kB;
  • Tamanho RAM dos dados: 20kB;
  • Resolução ADC: 12bit;
  • Temperatura Operacional: -40ºC a +85ºC;
  • Tensão de Operação: 2VDC a 3.6VDC;
  • Interfaces: CAN, I2C, SPI, USART, USB
  • Número de Canais ADC: 10;
  • Número de temporizadores/contadores: 3 Timers;
  • Dimensões: 53 x 22mm.
Para mais especificações, acesse o manual original do produto clicando aqui (LINK).

Diagrama de pinagem

Diagrama de pinagem do STM32

Como conectar o projeto

Para  realizar a programação desta placa, precisamos usar um módulo FTDI conversor USB para UART, e então podemos programá-lo diretamente via USB de um computador. Acompanhe o esquema das conexões:

Diagrama de conexão

Conexão dos pinos (STM32 ➞ FTDI)

  1. GND ➞ GND;
  2. VCC ➞ 5V;
  3. TXO ➞ A10;
  4. RXI ➞ A9;

Conexão dos jumpers

Atente-se a conexão dos jumpers conforme mostrado abaixo para definir a placa no modo DFU (atualização do firmware do dispositivo). Para definir, pressione o botão Redefinir ao lado e aguarde.

Configuração dos jumpers (modo DFU)
Configuração dos jumpers (modo Normal)

Configurando o STM32 no STM32CubeIDE

Passo 1: Instalação do STM32CubeIDE

O primeiro passo para começar a usar o STM32 com o ambiente de programação do STM32CubeIDE é instalar o programa no computador. Caso já tenha a IDE instalada, pule para o próximo tópico.

  1. Vá até o site oficial de download da IDE do STM32 clicando aqui;
  2. Escolha o seu sistema operacional como mostrado na imagem abaixo e clique para efetuar o download;
Janela de Download
  1. Clique em “Get latest;
  2. Será necessário realizar o cadastro do seu Nome e E-mail, nele você receberá o link do download;
Janela de cadastro para download

        5. No seu e-mail irá chegar a seguinte confirmação de registro;
        6. Clique em Downlod now para inicializar o download;

E-mail de confirmação do cadastro

Atenção: Após realizar o download, é importante colocar o arquivo executável do instalador que você irá descompactar, na pasta “Documentos” do seu computador antes de executá-lo. Caso contrário, irá surgir o erro de instalação error launching installer.

Passo 2: Configurando o STM32 na IDE STM32 CUBE

Como forma de exemplificar a utilização do STM32 vamos ensinar como usar o LED integrado da placa em um programa teste, fazendo uma alusão ao conhecido exemplo Blink do Arduino:

  1. Abra a IDE e selecione o local para o salvar seu trabalho. Marcar a caixa de seleção pulará esta janela na próxima inicialização.
  2. Clique em Launch para prosseguir;
Janela para escolha de diretório de trabalho

         3. Na barra de ferramentas entre em File ➞ New ➞ STM32 Project, para criar um novo projeto;

Passos para criação de novo projeto

         4. Em Comercial Part Number coloque o nome do dispositivo desejado, no nosso caso o STM32F103C8T6 e o selecione quando                   surgir na lista de itens na parte inferior da página;
         5. Clique em Next para continuar;

Seleção do dispositivo STM32F103C8T6

         6. Em seguida, dê um nome ao projeto. Aqui eu o chamei de Robobuilder_teste;
         7. Clique em Finish;

Janela de configuração inicial do projeto

Uma janela pop-up é aberta solicitando que você abra a perspectiva associada. Clique em Yes:

Janela de confirmação

Agora você deve estar na janela Ferramenta de configuração do dispositivoAqui você pode configurar a função de cada um dos pinos do STM32F103C8. Este é um recurso realmente interessante do STM32Cube, pois torna a configuração do seu projeto mais rápida e fácil.

Pinagem e configuração

Nosso exemplo é o pisca-pisca do LED integrado. Podemos visualizar através do Diagrama de Pinagem exposto no início que o LED integrado está conectado diretamente no pino PC13. 

 

  • Clique em PC13..;
  • Na janela que abrir, clique em GPIO_Output;
Opções de configuração do pino PC13

Na janela a esquerda que irá abrir, clique em System Core:

System Core

Em seguida, clique em GPIO e uma linha de parâmetros irá surgir a direita:

GPIO

Clique em cima de alguma coluna de algum parâmetro qualquer, uma janela de configuração irá surgir a baixo, dê o nome ao pino. No nosso caso, foi nomeado como Led_integrado;

Configurações do pino PC13

Para salvar vá em Arquivo ➞ Salvar (ou CTRL+S). Uma janela de mensagem é exibida. Se você clicar em Yes, um código de modelo será gerado com todas as configurações já existentes. 

Janela de confirmação
Janela de confirmação

Outra janela de mensagem aparece, desta vez pedindo para você abrir uma perspectiva. Responder Yes a esta mensagem inserirá um painel no lado direito que mostra um esboço do código:

Painel de esboço do código

Agora você verá o código do seu arquivo no IDE e poderá programar de acordo com seu interesse. 

Código padrão gerado

Contruindo o código Blink

Será necessário realizar algumas implementações para realizar o pisca-pisca do LED integrado na placa STM32. 

  • Primeiro, vá até a linha 93 e identifique o loop while (1) dentro da função main(). Esta é a parte que executa infinitamente enquanto o microcontrolador está ligado. Dentro deste loop copie e cole as seguintes linhas de código:
				
					HAL_GPIO_WritePin(ONBOARD_LED_GPIO_Port, ONBOARD_LED_Pin, GPIO_PIN_RESET);
	  delay(500000);
	  HAL_GPIO_WritePin(ONBOARD_LED_GPIO_Port, ONBOARD_LED_Pin, GPIO_PIN_SET);
	  delay(500000);
				
			

 A função HAL_GPIO_WritePin() torna um pino High ou Low. Seus parâmetros são a porta I/O, o nome do pino e o estado desse pino. A linha 1 leva o  estado do pino para High:

HAL_GPIO_WritePin(ONBOARD_LED_GPIO_Port, ONBOARD_LED_Pin, GPIO_PIN_SET);

Enquanto a linha 3 leva o pino para Low:

HAL_GPIO_WritePin(ONBOARD_LED_GPIO_Port, ONBOARD_LED_Pin, GPIO_PIN_RESET);

Observe que as configurações do GPIO estão na função MX_GPIO_Init() que foi inserida automaticamente pela Device Configuration Tool. Note também que temos uma função delay() entre o conjunto e a redefinição do estado do pino. Isso garante que nossos olhos possam captar o flash. No entanto, esta não é uma função interna. Inserimos esta função ao final do código.

Copie a seguinte função e cole na linha 174 do código:

				
					void delay (int a)
{
  volatile int i,j;
  for (i=0 ; i < a ; i++)
  {
     j++;
  }
  return;
}
				
			

A declaração da função delay()  deve ser feita junto com as outras funções no início do código. Para isso, cole void delay (int a); na linha 50. Depois disso, o projeto está pronto para ser construído. Vá para Project ➞ Build All (ou Ctrl+B):

Compilação do código construído

Se não houver erro, você deverá ver a seguinte mensagem no painel inferior:

Mensagem de status

Em seguida, enviaremos o código para o nosso Blue Pill. Conecte o cabo usb e verifique a posição dos jumpers, eles devem estar no modo DFU para que o STM32 entre no modo de programação.

dsdffs

ROBOBUILDERS IMPORTACAO E COMERCIO DE PRODUTOS DE SISTEMAS E AUTOMACAO - CNPJ: 27.338.195/0001-30 © Todos os direitos reservados. 2022