FAVORITAR
FecharPlease login

Franzininho C0: Entradas e Saídas no STMcubeIDE

Nesse tutorial, vamos aprender a configurar entradas e saídas digitais do Franzininho C0, controlando LEDs com um botão (pushbutton) utilizando o STMcubeIDE e o CubeMX.

Hardware necessário:

  • 1 Franzininho C0

Opcionais:

  • 2 resistores 300 ohms
  • 2 leds (cores a sua escolha)
  • 1 push-button

Pinout franzininho C0:

Inicialmente, utilizaremos o botão conectado ao PA8 e os LEDS conectados em PB6 e PB7. 

Configurações CubeMX

  1. Abra STM32Cube , crie um novo projeto e selecione o microcontrolador de destino “STM32C011F6P6”.  Você pode obter mais detalhes aqui caso tenha dúvida como fazer: https://embarcados.com.br/como-instalar-o-stm32cubeide-guia-de-primeiros-passos/
  1. Vá para a página de configurações de relógio e em HCLK digite 48 MHz para a frequência de saída desejada do sistema. Pressione a tecla “Enter” e deixe o aplicativo resolver os divisores/multiplicadores PLL necessários para atingir a taxa de clock desejada.
  1. Volte para a página de configuração dos pinos, selecione “Trace and Debug” e  habilite “Serial Wire”
  1. Após isso, em pinout view,  selecione no microcontrolador os pinos “PB6” e “PB5” e escolha “GPIO_Output”, depois selecione “PA8” como “GPIO_Input”. Em System Core > GPIO selecione os  pinos “PB6” e “PB5”,  mude a LABEL para “LED1” e “LED2”. Para o pino “PA8” mude a LABEL para “BOTAO” e lembre-se de habilitar o GPIO como pull-up. 

No dia 25 de Junho de 2024, ocorrerá o “Seminário de Sistemas Embarcados e IoT 2024“, no Holiday Inn Anhembi — Parque Anhembi, São Paulo–SP.

Garanta seu ingresso

  1. Por fim, em “project” clique em “generate code”. 

Exemplo 01

Nesse exemplo, nosso objetivo é alternar os estados do LED1 e LED2 a cada 1 segundo, enquanto o botão estiver pressionado. Para isso, usaremos as HAL_GPIO_ReadPin, HAL_GPIO_TogglePin e HAL_Delay(uint32_t delay).

Código

Em Core > Src > main.c modifiquei a função while(1) com o código abaixo:

Gravação

  1. Utilizando um gravador ST-LINK realize as conexões como indicado na figura.
  1. Pressione no ícone semelhante a um martelo, aguarde o build do projeto e caso não tenha erros pressione “run”.
  1. Após o run, aparecerá a tela de configuração do debugguer, deixe configurado como mostrado na imagem abaixo e clique em ok. 
  1. Se código gravado com sucesso você receberá uma mensagem no console e terá seus leds alternando o estado sempre que pressionar o botão. 

Exemplo 02

No exemplo 2, nosso objetivo é manter o LED1 ligado se botão pressionado, senão manter o LED2 ligado. Para isso, usaremos as HAL_GPIO_ReadPin, HAL_GPIO_WritePin e HAL_Delay(uint32_t delay).

Código

Em Core > Src > main.c modifiquei a função while(1) com o código abaixo:

Gravação

Para gravação repita o mesmo processo explicado no exemplo 01. Caso o código esteja gravado corretamente, você terá o LED1 ligado quando o botão pressionado e LED2 desligado. E se o botão não estiver pressionado, LED2 ligado e LED1 desligado. 

Explicação do código

No código gerado automaticamente no main(), encontramos três funções essenciais: 

  • As funções SystemClock_Config() e MX_GPIO_Init() são geradas automaticamente pelo CubeMX com o propósito de configurar o relógio do sistema e os pinos GPIO selecionados. A primeira cuida dos parâmetros do clock, como a frequência da CPU e dos barramentos, enquanto a segunda se encarrega de inicializar os pinos GPIO conforme suas definições de entrada ou saída. Essas funções são tipicamente encontradas após a função principal.
  • A função HAL_Init() que tem como funcionalidade  inicializar a interface Flash, a alocação NVIC e o clock inicial. 

Dentro do while(1), é onde inserimos o código programado por nós, que define o comportamento do microcontrolador enquanto ele está em execução. Nele usamos  as funções da biblioteca HAL relacionadas ao GPIO. Nesse tutorial foram utilizadas as seguintes funções para manipulação de entrada e saída. 

  • Leitura entrada: HAL_GPIO_ReadPin(GPIOx, GPIO_Pin); 
  • Configurar o estado do pino de saída: HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState);
  • Alternar o estado de um pino GPIO: HAL_GPIO_TogglePin(GPIOx, GPIO_Pin);
  • Contagem de tempo em milisegundos: HAL_Delay(uint32_t delay);

A biblioteca HAL foi criada pela ST e é composta por várias funções que ajudam na manipulação dos periféricos e pinos. Sua documentação detalhada pode ser encontrada em:  https://www.st.com/resource/en/user_manual/um3029-description-of-stm32c0-hal-and-lowlayer-drivers-stmicroelectronics.pdf 

Desafio extra

Que tal conectar o seu Franzininho C0 ao protoboard e adicionar componentes? Podemos montar o circuito conforme mostrado no esquema abaixo.

Resultado

Depois, carregue o código que aprendemos neste tutorial. Você verá o funcionamento apresentado abaixo.

Exemplo 01

Exemplo 02

Conclusão

Neste tutorial, apresentamos a configuração das entradas e saídas digitais com um exemplo prático: o controle de LEDs por meio de um botão. Além disso, você teve a oportunidade de se familiarizar com as bibliotecas HAL, fundamentais para o desenvolvimento de projetos com microcontroladores STM32. Com esses conhecimentos, você está pronto para explorar e criar uma variedade de aplicações com o Franzininho C0 e outros dispositivos STM32.

Saiba Mais

Franzininho C0 – Primeiros passos com Arduino

Compre a Franzininho C0 – Robocore

Compre a Franzininho C0 – Casa da Robótica

Outros artigos da série

<< Como instalar o STM32CubeIDE: Guia de Primeiros PassosFranzininho C0: aprenda a trabalhar com Timers >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
Inline Feedbacks
View all comments
Home » Software » Firmware » Franzininho C0: Entradas e Saídas no STMcubeIDE

EM DESTAQUE

WEBINARS

LEIA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste:


Seminário de
Sistemas Embarcados e IoT 2024
 
Data: 25/06 | Local: Hotel Holiday Inn Anhembi, São Paulo-SP
 
GARANTA SEU INGRESSO

 
close-link