NOVIDADE: Agora o curso possui Simulados, para lhe auxiliar no processo de aprendizagem.
Aprenda a criar Firmwares para o STM32F411 utilizando a STM32CubeIDE.
Neste curso você aprenderá sobre:
NOVIDADE: Agora o curso possui Simulados, para lhe auxiliar no processo de aprendizagem.
Aprenda a criar Firmwares para o STM32F411 utilizando a STM32CubeIDE.
Neste curso você aprenderá sobre:
Utilizar a STM32CubeIDE de forma eficiente.
Compreender as documentações disponíveis, como procurá-las e utilizá-las.
Criar projetos para o
Configurar corretamente o microcontrolador de acordo com cada necessidade.
Utilizar a biblioteca HAL para programar o STM32.
Depurar o código e analisar o comportamento do programa.
Organização do programa e dicas para criar bibliotecas.
Proteger o programa gravado no microcontrolador.
Para desenvolvimento dos programas, utilizaremos a placa de desenvolvimento Blackpill e um gravador ST-Link v2, caso queria acompanhar os programas desenvolvimentos, mas caso opte por um kit oficial da ST, pode ser utilizado a NUCLEO-F411RE. É recomendável, também, ter em mãos estes dispositivos, além de componentes eletrônicos, como botões, LEDs e resistores.
O curso buscará apresentar-lhe o essencial para que você possa programar este microcontrolador em bare-metal (sem nenhum tipo de kernel o RTOS), apresentando-lhe como configurar os seus sistemas de clock, GPIOs, e demais periféricos, tais como Timers E, ao final, desenvolver um simples projeto utilizando pelo menos 2 periféricos, com o objetivo de apresentar técnicas de programação, depuração e proteção do firmware.
É esperado que ao fim do curso você seja capaz de desenvolver projetos utilizando microcontroladores STM32, tendo condições de planejar, estruturar e desenvolver aplicações com uso consciente e eficiente dos recursos disponíveis na plataforma.
Espero ver você no curso, e qualquer dúvida, estou à disposição.
Descrição curta do instrutor.
Introdução ao curso e aos microcontroladores.
Apresentação da Black Pill, placa de desenvolvimento que iremos utilizar para desenvolvimento dos programas durante o curso.
Vale salientar que, caso o estudante possua uma NUCLEO-F4xx ou até mesmo uma Blue Pill, o aprendizado não será prejudicado, e todos os exemplos podem ser construídos nestas placas.
Apresentação da documentação do STM32F411 incluindo:
Datasheet geral do componentes (elétrico)
Manual de Referência
Documentação da Biblioteca HAL para o STM32F4
Instruções para download e instalação da STM32CubeIDE. Este é o software que será utilizado para desenvolvimento nas aulas subsequentes.
Visão geral da STM32CubeIDE após sua instalação.
Abordando os principais elementos da interface baseada em Eclipse.
Instruções de como importar um projeto já existente dentro do Workspace do software de desenvolvimento.
Explicação da estrutura de um projeto dentro da CubeIDE e do plugin CubeMX.
Nesta aula será abordado a importância do clock para os microcontroladores, além da diferença entre osciladores internos e externos.
Apresentação das fontes de clock suportadas pelo STM32F411, abordando, inclusive, a estrutura interna destes.
Explicação do High Speed Internal clock, apresentando suas características, vantagens e desvantagens.
Explicação do High Speed External Clock, apresentando, assim como no HSI, suas principais características, aplicações, vantagens e desvantagens.
Um importante recurso presente em grande parte dos microcontroladores, o PLL, permite que a frequência de entrada seja multiplicada para atingir frequências mais altas, permitindo que um melhor desempenho seja extraído do microcontrolador.
Vale ressaltar que esse ganho de poder, tem também as suas desvantagens.
Não existe nenhuma fonte de de clock perfeita, cada uma tem suas vantagens e desvantagens.
Nesta aula, apresento uma técnica para determinar qual a melhor fonte de clock para o seu projeto, de acordo com as necessidades e características deste.
Nesta aula, iniciaremos com o periférico mais básico de um microcontrolador: As suas GPIOs.
Neste tópico, vamos entender como funciona, internamente uma porta de GPIO.
É importante que, antes de tratarmos de utilizar este importante periférico do microcontrolador, devemos compreender como esse opera, para que tenhamos condições de realizar um uso seguro e eficiente, tanto em seu modo de Entrada (Input) e Saída (Output).
Neste primeiro exemplo, iremos abordar como configurar uma GPIO, como entrada ou saída, seus parâmetros de configuração, e como trabalhamos com ela durante a execução do programa.
No exemplo 2, mostramos como as GPIOs podem ser utilizadas para exibir informações em um Display LCD, muito comum em diversos projetos, que irá permitir exibir qualquer informação desejada.
Aqui já iremos começar a abordar a importação de bibliotecas dentro do projeto.
Neste tópico, iremos abordar as interrupções, entender primeiramente o seu conceito e, de uma forma didática, entender a sua importância no gerenciamento dos eventos de uma aplicação.
Veremos também como a rotina de interrupção acontece internamente no microcontrolador.
Nesta aula é abordada a estrutura de interrupção em um STM32F411, e o diagrama funcional da NVIC (Nested Vector Interrupt Control).
Também é abordado a questão dos cuidados que devem ser tomados ao tratar os eventos gerados nas ISRs.
Nesta parte, abordamos os callbacks e funções utilizados para interrupção de GPIO (EXTI) do STM32F411.
As funções de Callback disponibilizados pela HAL são um grande aliado no desenvolvimento da aplicação.
No exemplo de Interrupção de GPIO (EXTI) é abordado como configurar uma porta como interrupção, suas configurações disponíveis e como habilitar esta interrupção, afim de identificar quando um botão é pressionado, sem utilizar qualquer tipo de polling.
Vemos também a depuração/debug do código e a pilha de chamadas gerada pelos eventos dos botões.
Vamos entender, nesta aula, o que é um Timer e qual sua importância na escalabilidade de um programa, além de, associado a uma interrupção, permitir uma operação eficiente e responsiva da aplicação que está sendo desenvolvida.
Posteriormente, abordaremos como um timer funciona e seus elementos mais básicos, de forma conceitual, sem se ater à aplicação no STM32.
Um tipo especial de Timer, presente em praticamente toda linha STM32, é o RTC. Veremos suas principais diferenças, se comparados aos Timers de Uso Geral, e suas aplicações.
Após entendermos como funciona o Timer e o RTC, veremos as funções e rotinas implementadas pela HAL, incluindo os Callbacks dedicados as rotinas de interrupções.
Neste primeiro exemplo relacionado ao Timer, implementamos dois timers para piscar um LED, cada um.
Cada timer funcionará de uma forma diferente:
Timer em Modo Temporizador: Neste caso, iremos utilizar o modo temporizador para gerar o Toggle do LED.
Timer em Modo Interrupção: O Toggle do LED será gerado dentro do callback de interrupção do Timer.
Veremos ainda o sinal gerado através de Analisador Lógico.
Após compreendermos como um timer funciona, em seu conceito, veremos como que estes dispositivos são implementados no microcontrolador da ST.
Vale salientar que, no STM32, há vários categorias de Timers, com funcionalidades possíveis distintas entre si (Contador, Temporizador, Input Capture, Output Captura, PWM, etc).
Veremos estas diferenças entre cada um destes, para que tenhamos condições de dominar este periférico do STM32.
No segundo exemplo de Timers, iremos utilizar o modo de Input Capture para capturar a saída de um sonar, afim de medir a distância de um objeto em relação ao emissor.
De bônus, ainda aplicamos o periférico de DMA, para obter as informações sem intervenção da CPU.
No terceiro, e último exemplo de Timers, aplicamos uma das funcionalidades mais utilizadas para Timers, que é a implementação do PWM (Pulse Width Modulation).
Esta funcionalidade nos permite modular a potência entregue à uma determinada carga, veremos isto aplicado em alguns LEDs, para variar seu brilho.
Nesta seção, veremos o Conversor Analógico-Digital (ADC), um periférico que irá permitir a leitura de grandezas analógicas.
Antes de abordarmos o ADC no STM32, veremos alguns parâmetros relevantes do ADC e entender seu conceito de funcionamento.
Analisaremos o que o Reference Manual nos fornece de informação para compreender as capacidades do periférico e como este é implementado.
Entendido como o ADC funciona no STM32, veremos as principais funções que a HAL nos fornece para manipular o periférico analógico, observando, claro, as relacionadas à Interrupção e uso do DMA.
No primeiro exemplo, veremos a aplicação mais simples do ADC, que é para a leitura de um potenciômetro, afim de identificar a tensão no terminal de saída (Wiper) gerada pelo componente.
Aplicaremos o método de leitura por Polling e por Interrupção.
No Segundo exemplo, veremos uma forma de utilizar o ADC para reduzir a quantidade de GPIOs necessárias para ler botões em uma interface do usuário.
Utilizaremos um módulo que implementa 5 botões, que são lidos através de uma única saída analógica.
Neste exemplo utilizaremos o DMA para leitura do ADC sem interferência da CPU.
Neste último exemplo do ADC, veremos como ler múltiplas saídas do ADC, com o DMA, para ler 2 Joysticks, que requerem dois canais de ADC, cada.
Este exemplo apresenta uma aplicação real, tanto no quesito de uso de Joysticks, quanto na implementação de vários canais de ADC. Pois a maioria dos projetos sempre exigem múltiplas medidas de variáveis analógicas.
Vamos verificar seus conhecimentos nesta metade do STM32F411 Essencial.
Boa sorte!
A partir desta seção, abordaremos as interfaces de comunicação seriais.
Estas interfaces vão permitir que nos comuniquemos com periféricos externos, microcontroladores e até mesmo um Computador.
A primeira interface que iremos abordar, é a UART. Uma interface serial assíncrona amplamente empregada em diversos projetos. Veremos, aqui, como ela funciona, suas aplicações, vantagens e desvantagens.
Entendido como a UART funciona, abordamos como o STM32F411 implementa este periférico, baseado nas informações presentes no Reference Manual.
Analisaremos as funções implementadas pela HAL para uso do periférico de UART, abordando, sempre, as rotinas de Callback e de DMA.
Neste primeiro exemplo da UART, iremos associar o circuito da Black Pill a um conversor USB-TTL (UART-USB) para nos comunicarmos com o Computador.
Veremos então, como configurar o PC para se comunicar com o microcontrolador e iremos desenvolver uma aplicação que irá devolver todos os bytes enviados pelo computador de volta para a máquina (Echo).
Neste segundo e, último exemplo da UART no STM32, iremos utilizar o DMA para estabelecer uma comunicação entre duas Black Pills.
A aplicação proposta visa implementar um protocolo de envio de informações, onde uma placa receptora exibirá em um LCD, qual botão está pressionado na placa transmissora.
Seguindo nos protocolos de comunicação, iremos abordar uma interface muito utilizada para comunicação de alta velocidade entre periféricos.
Abordaremos seu conceito de funcionamento, os terminais lógicos necessários, e, claro, suas vantagens e desvantanges.
A SPI é uma interface de comunicação serial síncrona muito empregada em memórias FLASH e outros periféricos.
Após compreensão de como o conceito da SPI, veremos como o STM32F411 implementa este periférico.
Como sempre, é importante compreender como o microcontrolador implementa seus periféricos, afim de utiliza-lo de forma eficiente.
Como de praxe, veremos as rotinas fornecidas pela HAL para trabalharmos com os periféricos de SPI presentes no microcontroladores da linha STM32F4.
Abordaremos as funções utilizadas para Polling (também chamado de modo Blocking), Interrupção e DMA.
Neste primeiro exemplo da SPI, implementaremos um cenário com duas Black Pills, que se comunicarão pela SPI.
Uma será configurada como Master, e a outra como Slave. A finalidade é observarmos as diferenças de implementação destes dois modos no STM32, e como podemos trabalhar com estes.
Ligaremos ao circuito o Analisador Lógico, para que possamos visualizar as linhas lógicas da SPI e observar na prática os seus sinais.
No segundo exemplo, utilizamos um periférico de rádio que utiliza a SPI como meio de comunicação, o NRF24L01. Implementaremos este circuito em duas Black Pills, para estabelecer um link de comunicação via rádio, afim de transmitir informações de forma remota.
Na seção 10, iremos abordar o conceito de um periférico de comunicação muito aplicado em periféricos: a I2C, uma interface de comunicação serial síncrona.
Esta interface resolve diversos problemas presentes na UART e na SPI.
Veremos suas principais características, como funciona, seus pontos positivos e, claro, os negativos.
Compreendido como a I2C funciona conceitualmente, veremos como este periférico é implementado no STM32.
Abordaremos as informações mais relevantes fornecidos pelo Reference Manual.
A documentação HAL, fornece as rotinas implementadas na linha STM32F4 para utilizarmos a I2C, tanto em modo Master, como Slave, e seus respectivos usos para modo Polling, Interrupção e DMA.
No primeiro exemplo de I2C, similar ao que foi feito para a SPI, iremos utilizar o I2C Master em uma Black Pill, e a I2C Slave em outra, afim de estabelecer um link de comunicação.
Iremos abordar esta aplicação em modo de Interrupção, pois sua aplicação, é relativamente mais complexa que nas outras interfaces.
Neste exemplo, iremos utilizar a I2C para exibir informações em um display OLED, baseado nas leituras de ADC Externo, que utiliza, também, a I2C.
O importante deste exemplo, é que veremos, na prática, a característica da I2C de permitir mais de um dispositivo compartilhando o mesmo barramento.
Este terceiro, e último exemplo, manteremos o Display OLED, mas, desta vez, iremos trazer um Acelerômetro/Giroscópio, exibindo no display as informações de inclinação.
Nesta última aula que abordamos periféricos do microcontrolador e parte conceitual, abordaremos a interface de comunicação mais utilizada no mundo e que revolucionou o mundo dos computadores; o USB.
Veremos, de forma simplificada, como esta funciona e suas padronizações.
Neste tópico, veremos o periférico de USB OTG do STM32F411, veremos que ela pode operar em modo Host e modo Device.
Nesta aula, apresentarei as documentações referentes a biblioteca de USB Host e USB Device do STM32.
Estas duas documentações são essenciais para quem for trabalhar com este periférico em qualquer microcontrolador STM32.
Neste Exemplo de USB, iremos aplicar o modo Device ao STM32F411 e iremos utilizar a Classe de Dispositivo de comunicação.
Esta classe permite simular uma porta COM virtual, permitindo uma comunicação com a máquina Host, sem necessidade de qualquer conversor Serial.
Vamos verificar seus conhecimentos nesta etapa final do STM32F411 Essencial.
Boa sorte!
Introdução sobre a aula referente ao Projeto Final.
Nesta aula, abordaremos o conceito de estruturação e organização de um projeto.
Onde se subverte a ideia de que a Aplicação é interna ao projeto do microcontrolador. Veremos como podemos organizar um projeto, de forma que diversos microcontroladores executem um mesmo código.
Apresentaremos os circuitos montados em protoboard, juntamente com os esquemáticos do Circuito Controlador e do Circuito Aquecedor.
Neste tópico, criamos e organizamos o Projeto Final de acordo com a estrutura discutida previamente. Desde a criação da pasta raíz do projeto, até a configuração de um novo projeto na CubeIDE.
Configuramos o Teclado Matricial utilizando uma biblioteca previamente desenvolvida e aplicamos suas funções de form adequada.
Neste tópico, importaremos a biblioteca do Lcd e moldaremos a escrita dos textos e informações desejadas no painel.
Começamos o desenvolvimento da Máquina de Estados do Circuito Controlador.
Máquina de Estados são formas eficientes de lidar com lógicas que requerem um tratamento diferenciado para diversos casos de eventos ou situações lógicas.
Criação e configuração da Aplicação do Rádio, que se utiliza da biblioteca do nRF24L01.
É importante que, dentro da aplicação, seja abstraído elementos relacionados a um hardware específico.
Desenvolvimento de uma biblioteca da aplicação para tratamento das informações que serão transmitidas pelo rádio.
É importante que um protocolo, não seja fortemente dependente e relacionado a um determinado meio de transmissão.
Aqui finalizamos a Máquina de Estados do Circuito Controlador, e finalizamos alguns aspectos relacionados à interrupções e tratamentos em bibliotecas.
O Build Configuration é um recurso que precisa ser dominado pelo desenvolvedor que utiliza a STM32CubeIDE, com ela, podemos criar configurações de compilação distintas para cada variação do projeto ou ambiente de execução.
Alguns bugs, antes dos primeiros testes, tendem a permanecer e passarem desapercebidos. Nesta aula, apresentamos apenas as correções que foram feitas durante os testes iniciais do código desenvolvido.
Neste tópico, é apresentada as diferenças dos códigos entre o Circuito Aquecedor e o Circuito Controlador.
Projetos complexos podem ser compostos por mais de uma placa ou microcontrolador, por isso, não é raro, em alguns momentos, ser necessário que depuremos dois projetos simultaneamente.
Nesta aula, é abordado como configurar o Debug na STM32CubeIDE para que seja possível habilitar mais de um Deputador ST-Link ao mesmo tempo.
Aqui, vamos ligar o Circuito Aquecedor e o Circuito Controlador, simultaneamente, para verificar seu funcionamento e operação, e se estão de acordo com a lógica que foi implementada.
Nesta aula, vamos aprender como configurar a otimização do binário gerado a partir do código fonte.
Veremos que podemos escolher entre diferentes tipos e níveis de otimização, entendendo suas vantagens, mas também seus impactos durante o desenvolvimento de um projeto de Sistemas Embarcados.
Encerramento de nossa aula, e, por consequência, de nosso curso de STM32F411.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.