- ST-LINK V2
- STM32CubeMX
- Materiais requisitados
- Diagrama de circuito e conexões
- Criação e gravação de um programa em STM32 usando Keil uVision e ST-Link
- Saída da placa STM32 programada Keil
- Programa
Os microcontroladores STM32 que usam a arquitetura ARM Cortex M estão se tornando populares e são usados em muitas aplicações por causa de seus recursos, custo e desempenho. Programamos STM32F103C8 usando o IDE Arduino em nossos tutoriais anteriores. Programar STM32 com Arduino IDE é simples, pois existem muitas bibliotecas disponíveis para vários sensores realizarem qualquer tarefa, só precisamos adicionar essas bibliotecas no programa. Este é um procedimento fácil e você pode não entrar em um aprendizado profundo sobre os processadores ARM. Portanto, agora estamos entrando no próximo nível de programação chamado programação ARM. Com isso, podemos não apenas melhorar nossa estrutura do código, mas também economizar espaço de memória, não usando bibliotecas desnecessárias.
A STMicroelectronics introduziu uma ferramenta chamada STM32Cube MX, que gera o código básico de acordo com os periféricos e a placa STM32 selecionada. Portanto, não precisamos nos preocupar com a codificação de drivers e periféricos básicos. Além disso, este código gerado pode ser usado no Keil uVision para edição de acordo com os requisitos. E, finalmente, o código é gravado no STM32 usando o programador ST-Link da STMicroelectronics.
Neste tutorial, aprenderemos como programar STM32F103C8 usando Keil uVision & STM32CubeMX fazendo um projeto simples de interface de um botão de pressão e LED com a placa STM32F103C8 Blue Pill. Iremos gerar o código usando STM32Cube MX, em seguida, editar e enviar o código para STM32F103C8 usando Keil uVision. Antes de entrar em detalhes, primeiro aprenderemos sobre o programador ST-LINK e a ferramenta de software STM32CubeMX.
ST-LINK V2
O ST-LINK / V2 é um depurador e programador no circuito para as famílias de microcontroladores STM8 e STM32. Podemos fazer upload do código para STM32F103C8 e outros microcontroladores STM8 e STM32 usando este ST-LINK. O módulo de interface de fio único (SWIM) e as interfaces JTAG / serial wire debugging (SWD) são usados para se comunicar com qualquer microcontrolador STM8 ou STM32 localizado em uma placa de aplicação. Como os aplicativos STM32 usam a interface USB full-speed para se comunicar com os ambientes de desenvolvimento integrado Atollic, IAR, Keil ou TASKING, podemos usar este hardware para programar os microcontroladores STM 8 e STM32.
Acima está a imagem do dongle ST-LINK V2 da STMicroelectronics que suporta toda a gama de interface de depuração STM32 SWD, uma interface simples de 4 fios (incluindo alimentação), rápida e estável. Ele está disponível em uma variedade de cores. O corpo é feito de liga de alumínio. Possui uma indicação de LED azul, pois é usado para observar o estado de funcionamento do ST-LINK. Os nomes dos pinos estão claramente marcados na concha, como podemos ver na imagem acima. Ele pode ser conectado ao software Keil, onde o programa pode ser atualizado para os microcontroladores STM32. Então, vamos ver neste tutorial como este programador ST-LINK pode ser usado para programar o microcontrolador STM32. A imagem abaixo mostra os pinos do módulo ST-LINK V2.
Nota: Ao conectar o ST-Link com o computador pela primeira vez. Precisamos que o driver do dispositivo seja instalado. Os drivers de dispositivo podem ser encontrados neste link de acordo com o seu sistema operacional.
STM32CubeMX
A ferramenta STM32CubeMX faz parte do STMicroelectronics STMCube. Esta ferramenta de software torna o desenvolvimento fácil, reduzindo o esforço, tempo e custo de desenvolvimento. STM32Cube inclui STM32CubeMX que é uma ferramenta de configuração de software gráfico que permite a geração de código de inicialização C usando assistentes gráficos. Esse código pode ser usado em vários ambientes de desenvolvimento como keil uVision, GCC, IAR etc. Você pode baixar essa ferramenta no link a seguir.
STM32CubeMX tem os seguintes recursos
- Solucionador de conflitos
- Um ajudante de configuração da árvore do relógio
- Uma calculadora de consumo de energia
- Um utilitário que realiza a configuração de periféricos MCU como pinos GPIO, USART etc
- Um utilitário que realiza a configuração de periféricos MCU para pilhas de middleware como USB, TCP / IP, etc.
Materiais requisitados
Hardware
- STM32F103C8 placa de comprimido azul
- ST-LINK V2
- Botão de apertar
- CONDUZIU
- Tábua de pão
- Jumper Wires
Programas
- Ferramenta de geração de código STM32CubeMX (link)
- Keil uVision 5 (link)
- Drivers para ST-Link V2 (link)
Diagrama de circuito e conexões
Abaixo está o diagrama de circuito para simplesmente conectar um LED com a placa STM32 usando um botão de pressão.
Conexão entre ST-LINK V2 e STM32F103C8
Aqui, a placa STM32 Blue Pill é alimentada pelo ST-LINK, que está conectado à porta USB do computador. Portanto, não precisamos alimentar o STM32 separadamente. A tabela abaixo mostra a conexão entre o ST-Link e a placa de comprimidos Blue.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3 V |
LED e botão de pressão
O LED é usado para indicar a saída da placa Blue Pill quando um botão é pressionado. O ânodo do LED é conectado ao pino PC13 da placa Blue Pill e o cátodo é aterrado.
Um botão é conectado para fornecer entrada para o pino PA1 da placa Blue Pill. Devemos também usar um resistor pull up de valor 10k porque o pino pode flutuar sem qualquer entrada quando o botão é liberado. Uma extremidade do botão é conectada ao aterramento e a outra extremidade ao pino PA1 e um resistor pull up de 10k também é conectado a 3,3 V da placa Blue Pill.
Criação e gravação de um programa em STM32 usando Keil uVision e ST-Link
Etapa 1: - Primeiro instale todos os drivers de dispositivo para ST-LINK V2, ferramentas de software STM32Cube MX e Keil uVision e instale os pacotes necessários para STM32F103C8.
Etapa 2: - A segunda etapa é abrir >> STM32Cube MX
Etapa 3: - Clique em Novo Projeto
Etapa 4: - Depois disso, pesquise e selecione nosso microcontrolador STM32F103C8
Passo 5: - Agora o esboço de pinagem de STM32F103C8 aparece, aqui podemos definir as configurações de pino. Também podemos selecionar nossos pinos na seção de periféricos de acordo com nosso projeto.
Passo 6: - Você também pode clicar no pino diretamente e uma lista aparece, agora selecione a configuração de pino necessária.
Etapa 7: - Para nosso projeto, selecionamos PA1 como GPIO INPUT, PC13 como GPIO OUTPUT e depuração SYS como SERIAL WIRE, aqui apenas conectamos os pinos ST-LINK SWCLK e SWDIO. Os pinos selecionados e configurados aparecem na cor VERDE. Você pode notar isso na imagem abaixo.
Etapa 8: - Em seguida, na guia Configuração , selecione GPIO para definir as configurações de pino GPIO para os pinos que selecionamos.
Etapa 9: - Em seguida, nesta caixa de configuração de pinos, podemos configurar o rótulo do usuário para os pinos que estamos usando, ou seja, nomes de pinos definidos pelo usuário.
Passo 10: - Depois clique em Projeto >> Gerar Código .
Etapa 11: - Agora a caixa de diálogo de configurações do projeto aparece. Nesta caixa, escolha o nome e a localização do seu projeto e selecione o ambiente de desenvolvimento. Estamos usando o Keil, então selecione MDK-ARMv5 como IDE.
Etapa 12: - Em seguida, na guia Gerador de código , selecione Copiar apenas os arquivos de biblioteca necessários e clique em OK.
Etapa 13: - Agora a caixa de diálogo de geração de código aparece. Selecione Abrir projeto para abrir o projeto automaticamente o código gerado no Keil uvsion.
Etapa 14: - Agora a ferramenta Keil uVision abre com nosso código gerado no STM32CubeMx com o mesmo nome de projeto com a biblioteca necessária e os códigos configurados para os pinos que selecionamos.
Passo 15: - Agora só precisamos incluir a lógica para realizar alguma ação no LED de saída (pino PC13) quando o botão é pressionado e solto na entrada GPIO (pino PA1). Portanto, selecione nosso programa main.c para incluir alguns códigos.
Etapa 16: - Agora adicione o código no loop while (1) , veja a imagem abaixo onde destaquei essa seção para executar o código continuamente.
enquanto (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Botão DETECTS é pressionado {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Para tornar a saída alta quando o botão é pressionado} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Para tornar a saída baixa quando o botão for pressionado}}
Etapa 17: - Depois de terminar de editar o código, clique no ícone Opções de Destino na guia de depuração e selecione Depurador ST-LINK
Além disso, clique no botão Configurações e, na guia Download do Flash, marque a caixa de seleção Reiniciar e Executar e clique em 'ok'.
Etapa 18: - Agora clique no ícone Reconstruir para reconstruir todos os arquivos de destino.
Passo 19: - Agora você pode conectar o ST-LINK ao computador com as conexões do circuito prontas e clicar no ícone DOWNLOAD ou pressionar F8 para piscar o STM32F103C8 com o código que você gerou e editou.
Etapa 20: - Você pode notar a indicação piscando na parte inferior da janela do keil uVision.
Saída da placa STM32 programada Keil
Agora, quando pressionamos o botão, o LED acende e quando o liberamos, o LED apaga.
Programa
A parte principal que adicionamos no programa gerado é mostrada abaixo. O código abaixo precisa ser incluído em while (1 ) do programa main.c gerado pelo STM32CubeMX. Você pode voltar para a Etapa 15 para a etapa 17 para saber como deve ser adicionado no programa main.c.
enquanto (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Botão DETECTS é pressionado {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Para tornar a saída alta quando o botão é pressionado} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Para tornar a saída baixa quando o botão for pressionado}}
O processo completo de criação e upload do projeto na placa STM32 também é explicado no vídeo fornecido no final. Além disso, o código completo do arquivo main.c é fornecido abaixo, incluindo o código fornecido acima.
Além disso, você pode encontrar nosso conjunto completo de projetos STM32 aqui.