- Selecionando e baixando as plataformas de desenvolvimento necessárias para as placas Nucleo64
- Diagrama de circuito e configuração de hardware
- Primeiros passos com STM32CubeMX para placas de desenvolvimento STM32 Nucleo64
- Programação da placa de desenvolvimento STM32 Nucleo64 usando TrueSTUDIO
- STM32 Nucleo64 Programa para controlar o LED usando o botão de pressão
- Depuração e upload de código para STM32 Necleo64 Development Board usando TrueSTUDIO
Muitos de nós devem estar familiarizados com os microcontroladores populares e placas de desenvolvimento como Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051, etc. Na verdade, para a maioria das pessoas, Arduino teria sido sua primeira placa de desenvolvimento, mas à medida que nos aprofundamos e começamos designs profissionais, logo perceberemos as limitações do Arduino (como custo, versatilidade, estabilidade, velocidade, etc.) e entenderemos a necessidade de mudar para uma plataforma de microcontrolador mais nativa como PIC, STM, Renesas, etc.
Já cobrimos uma sequência de tutoriais de microcontroladores PIC, que orientam os iniciantes no aprendizado de microcontroladores PIC. Da mesma forma, começando com este artigo, também planejaremos uma sequência de Tutoriais da placa de desenvolvimento STM32 Nucleo64 que podem ajudar os iniciantes a aprender e desenvolver usando a plataforma STM32. As placas de desenvolvimento Nucleo64 são uma plataforma de baixo custo e fácil de usar para desenvolvedores profissionais e também para amadores. Se você é completamente novo nas placas de desenvolvimento STM32 Nucleo64, dê uma olhada neste vídeo de revisão do Nucleo64 para entender os fundamentos desta placa antes de prosseguir. O vídeo também demonstra como programar STM32 usando a plataforma ARM Mbed mas para este tutorial, usaremos outra plataforma de uso gratuito da ST Microelectronics chamada TrueSTUDIO.
Nota: Existem muitas versões das placas de desenvolvimento STM32 Nucleo64, a placa particular usada neste tutorial é NUCLEO-F030R8. Escolhemos esta placa principalmente pelo seu baixo custo. Mesmo se você tiver uma versão diferente, a maioria das coisas discutidas no tutorial serão suficientes para você começar.
Selecionando e baixando as plataformas de desenvolvimento necessárias para as placas Nucleo64
Começar com qualquer microcontrolador vai precisar de um IDE de programação, como temos Arduino IDE para placas Arduino, Atmel Studio para microcontrolador AVR, MP Lab para PIC, etc. Portanto, aqui também precisamos de um IDE para nossas placas STM32 Nucleo64 para realizar programação e depuração. A família STM32 consiste em microcontroladores de 32 bits que suportam os seguintes IDEs e conjuntos de ferramentas:
- IAR Embedded Workbench® para ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- Bancada de trabalho do sistema para STM32
Aqui para nossos tutoriais, TrueSTUDIO será usado para escrever, compilar e depurar código porque é gratuito para baixar e usar até mesmo para projetos comerciais sem qualquer requisito de licença. Em seguida, o STM32CubeMX será usado para gerar drivers periféricos para placas STM32 para facilitar a programação. Para carregar nosso programa (arquivo hex) em nossa placa de desenvolvimento, as pessoas normalmente usam a ferramenta STM32 ST-LINK Utility, mas em vez disso, usaremos o próprio TrueSTUDIO para fazer isso. TrueSTUDIO tem um modo de depuração que permite aos programadores carregar o arquivo hex diretamente para a placa STM32. TrueSTUIO e STM32CubeMX são fáceis de baixar, basta seguir o link abaixo, inscrever-se e baixar o setup. Em seguida, instale-os no seu laptop.
- Baixe STM32Cube MX
- Baixar TrueSTUDIO
Diagrama de circuito e configuração de hardware
Antes de prosseguirmos com a seção de software e codificação, vamos preparar nossa placa para este projeto. Conforme mencionado anteriormente neste artigo, controlaremos um LED usando um botão. Agora, se você viu o vídeo com link acima, já deve saber que sua placa de desenvolvimento STM32 tem dois conjuntos de pinos de conector em cada lado chamados pinos ST Morpho. Conectamos um botão de pressão e um LED a esses pinos, conforme mostrado no diagrama de circuito abaixo.
As conexões de circuito são fáceis para este projeto, precisamos conectar um LED no PA5 do PORTA e um switch no PC13 do PORTC em relação ao GND. Depois que as conexões foram feitas, minha configuração de teste ficou assim.
Como alternativa, também podemos usar o LED embutido e o botão de pressão na placa. Esses LEDs embutidos e o botão de pressão também são conectados no mesmo pino, conforme mostrado no diagrama de circuito. Adicionamos componentes externos apenas para a prática. O diagrama de pinos abaixo da placa de desenvolvimento STM32 será útil para saber onde cada pino Morpho está conectado a bordo.
Primeiros passos com STM32CubeMX para placas de desenvolvimento STM32 Nucleo64
Etapa 1: após a instalação, inicie o STM32CubeMX e selecione o seletor de placa de acesso para selecionar a placa STM32.
Passo 2: Agora pesquise o quadro pelo nome do seu painel STM32, como NUCLEO-F030R8, e clique no quadro que aparece na imagem. Se você tiver um fórum diferente, pesquise o respectivo nome. O software oferecerá suporte a todas as placas de desenvolvimento STM32 da ST Microelectronics.
Passo 3: Agora clique em sim como mostrado na imagem abaixo, para inicializar todos os periféricos em seu modo padrão. Posteriormente, podemos alterar os requeridos conforme a necessidade de nosso projeto.
Após clicar em 'Sim', a tela será semelhante à imagem abaixo e um pino de cor verde indicando que eles são iniciados por padrão.
Etapa 4: agora os usuários podem selecionar a configuração desejada nas categorias. Aqui neste tutorial, alternaremos um LED usando um botão de pressão. Portanto, precisamos fazer o pino do LED como saída e o pino do interruptor como INPUT.
Você pode selecionar qualquer pino, mas estou selecionando PA5 e alterando seu estado para GPIO_Output para fazê-lo funcionar como um pino de saída, conforme mostrado na imagem abaixo.
Da mesma forma, estou selecionando PC13 como GPIO_Input para poder ler o status do meu botão de pressão.
Alternativamente, também podemos configurar os pinos na guia pinagem e configuração, assim como mostrado abaixo.
Etapa 5: Na próxima etapa, o usuário pode definir a frequência desejada para o microcontrolador e os pinos de acordo com o oscilador externo e interno. Por padrão, um oscilador de cristal interno de 8 MHz é selecionado e usando o PLL, este 8 é convertido para 48 MHz. O que significa que, por padrão, a placa STM32 ou o microcontrolador e os pinos funcionarão em 48 MHz.
Etapa 6: Agora vá para o gerenciador de projeto e dê um nome ao seu projeto, localização do projeto e selecione o conjunto de ferramentas ou IDE. Aqui estamos usando TrueSTUDIO, então selecionei o mesmo mostrado abaixo.
Passo 7: Agora clique na marca Gerar Código pelo círculo vermelho na imagem abaixo.
Etapa 8: Agora você verá um pop-up conforme fornecido e clique em abrir projeto. Mas, certifique-se de ter instalado o TrueSTUDIO antes desta etapa.
Programação da placa de desenvolvimento STM32 Nucleo64 usando TrueSTUDIO
Agora seu código ou projeto será aberto no TrueSTUDIO automaticamente se TrueSTUDIO solicitar a localização do espaço de trabalho e fornecer um local do espaço de trabalho ou ir com o local padrão.
O usuário verá a tela fornecida abaixo e, em seguida, precisará clicar na marca do canto em vermelho.
E agora podemos ver o código em nosso IDE TreuSTUDIO. No lado esquerdo da pasta 'src' podemos ver outros arquivos de programa (com extensão.c) que já foram gerados para nós a partir do STM32Cube. Basta programar o arquivo main.c. Mesmo no arquivo main.c já teremos algumas coisas configuradas para nós pelo CubeMX, apenas temos que editá-lo para se adequar ao nosso programa. O código completo dentro do arquivo main.c é fornecido na parte inferior desta página.
STM32 Nucleo64 Programa para controlar o LED usando o botão de pressão
Como todo o driver e código necessários são gerados pelo STM32CubeMX, só temos que configurar um pino de LED como saída e um botão como entrada. O programa para controlar o led usando o botão de pressão deve ser escrito no arquivo main.c. O programa completo pode ser encontrado no final desta página. A explicação disso é a seguinte
Nós apenas escrevemos o código para alternar o LED usando o botão. Para conseguir isso, primeiro definimos pinos para LED e botões de pressão. Aqui nós definimos um LED no pino 5 número de PORTA
#define LED_PORT GPIOA #define LED_PIN GPIO_PIN_5
E defina a chave no pino número 13 do PORTC.
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
Então, na função principal, inicializamos todos os periféricos usados.
/ * Inicializa todos os periféricos configurados * / MX_GPIO_Init (); MX_USART2_Init ();
Em seguida, leia o botão de pressão usando a instrução if e, se o botão for encontrado, pressione (LOW) e o LED alternará seu estado.
While (1) {/ * CÓDIGO DO USUÁRIO END WHILE * / If (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * CÓDIGO DE USUÁRIO COMEÇAR 3 * /}
Aqui a função HAL_GPIO_ReadPin (SW_PORT, SW_PIN) tem dois argumentos, um é PORT e o outro é um pino no qual a chave é conectada e este pino é configurado como INPUT durante a configuração do periférico no STM32CubeMX.
Depuração e upload de código para STM32 Necleo64 Development Board usando TrueSTUDIO
Agora conecte sua placa ao computador usando o cabo do programador. Depois de conectá-lo, o driver necessário para a placa deve ser baixado automaticamente, você pode verificar isso usando o gerenciador de dispositivos.
Em seguida, pressione o ícone de depuração marcado pelo círculo vermelho na imagem fornecida abaixo para compilar o programa e entrar no modo de depuração.
No modo de depuração, o código será carregado automaticamente. Agora precisamos executar o código pressionando 'Resume' ou F8 (marcado no circuito vermelho na imagem abaixo).
Agora podemos testar o controle do LED pressionando o botão. De acordo com o código, o LED deve mudar de estado toda vez que você pressiona o botão. O trabalho completo também pode ser encontrado no link do vídeo no final desta página.
Após o teste, também podemos encerrar o programa pressionando o ícone de encerramento, marcado pelo círculo vermelho na imagem abaixo.