STM8S-Discovery – I/O’s

Este post faz parte da série STM8S-Discovery. Leia também os outros posts da série:

Esta série de artigos é baseada na apresentação de ferramentas de Hardware e Software para o desenvolvimento de projetos utilizando os microcontroladores 8-bit STMicroelectronics que, além de MCU’s com o núcleo da própria fabricante, possuem modelos que utilizam arquitetura ARM®.

 

No primeiro post, descrevemos um pouco do Hardware STM8S-Discovery, do MCU contido neste kit de desenvolvimento e um dos pacotes de Software suportados.

 

Nesta etapa, daremos continuidade efetivamente na criação de um código exemplo, sua depuração no ambiente de desenvolvimento STVD e a compilação pelo COSMIC.

 

A biblioteca padrão da ST fornece projetos modelos que utilizam os drivers dos periféricos que os MCU’s de sua linha suportam. Veja na Figura 1 que, abrindo o arquivo Project.stw pelo STVD em File > Open Workspace contido no caminho

“...\STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Template\STVD\Cosmic”

a IDE mostra vários projetos com diferentes modelos de MCU’s:

 

Workspace modelo da biblioteca STM8S com o projeto STM8S105 ativo e aberto no STVD
Figura 1 - Workspace modelo da biblioteca STM8S com o projeto STM8S105 ativo e aberto no STVD

 

Tendo como embasamento este modelo acima, nesta fase, existem duas opções para iniciarmos o desenvolvimento de nosso próprio projeto. Basicamente, podemos:

 

1 - Utilizar a biblioteca completa do MCU

 

Copiamos o projeto modelo para um diretório dedicado de nosso desejo, como ilustra a figura 2. Daí em diante, podemos customizar o workspace e projeto que já possui todos os arquivos de periféricos (IO’s, AD’s, UART, SPI, dentre outros) e, mesmo que não usemos algum periférico, sabemos que o driver dele está ali a nossa disposição.

 

Figura 2 - Copiando o projeto modelo para embasamento do nosso próprio projeto

 

 

2 - Adicionar arquivos de periféricos de acordo com a demanda da aplicação

 

Neste caso, a medida em que vamos desenvolvendo o código, vamos inserindo os drivers em nosso projeto. Assim, o projeto inicializa quase zerado e vamos incrementando-o quando necessário.

 

Ambas opções são bem detalhadas no documento UM0834 da fabricante e podem ser seguidas fielmente. Nesta série de artigos, no entanto, abordaremos a segunda.

 

Agora, como exemplo deste tópico, podemos desenvolver um código dedicado a nossa aplicação que será gerenciar os periféricos LED LD1 e uma Chave Táctil. Nesta fase, não vamos abordar o botão Touch TS1 contido no kit por conta da necessidade de conhecermos o Princípio da Aquisição RC para STM8, alvo dos próximos artigos, o qual explora a teoria e implementação de hardware e software para aplicações sensíveis ao toque.

 

 

3 - Criando o Projeto

 

Abrindo o STVD, podemos criar uma área onde alocaremos nossos projetos (workspace) pelo caminho File > New Workspace > Create workspace and Project.

 

Criando workspace, projeto e definindo o compilador no STVD
Figura 3 - Criando workspace, projeto e definindo o compilador no STVD

 

Definindo o MCU e a Aparência da IDE com o My_Workspace aberto
Figura 4 - Definindo o MCU e a Aparência da IDE com o My_Workspace aberto

 

Agora podemos adicionar os drivers da biblioteca padrão da ST e criar as nossas para a aplicação. Neste caso, organizemos os arquivos de tal forma que subentende-se a responsabilidade de cada um, por exemplo, um arquivo chamado setup.c gerencia as funções de inicialização do Hardware. Nele, iremos configurar as IO’s para serem entradas ou saídas e otimizaremos este arquivo em tópicos seguintes, já que adicionaremos funcionalidades em nosso projeto utilizando AD’s, UART, dentre outros.

 

Cada projetista tem o seu estilo, entretanto existem alguns padrões (boas práticas) que foram adotados com o tempo e que de certa forma nos ajudam na interpretação e manutenção de códigos. Esta é uma estratégia para que o projeto tenha boa escalabilidade e facilidade para outros programadores trabalharem no seu código em sua empresa, escola, ou mesmo na comunidade open-source.

 

Como mostra a figura 5, criamos duas pastas para alocar os arquivos drivers, do qual as nomeamos como StdPeriph_src e StdPeriph_inc justamente para referenciar os arquivos source e header respectivamente. Neste tópico, os arquivos necessários são: stm8s_gpio.c, stm8s_gpio.h e stm8s.h constantes em “...\Std_Periph_Lib\Libraries\STM8S_StdPeriph_Driver”

 

Adicionando os drivers da biblioteca padrão da ST
Figura 5 - Adicionando os drivers da biblioteca padrão da ST

 

Temos que incluir também os arquivos que gerenciam os vetores de interrupção. Neste caso, vamos copiar para a pasta de nosso projeto os 4 arquivos abaixo constantes em “...\STM8S_StdPeriph_Template” e “...\STVD\Cosmic”:

  • Stm8s_conf.h;
  • Stm8s_it.c;
  • Stm8s_it.h;
  • Stm8s_interrupt_vector.

 

Como dever ficar o visual do STVD neste momento
Figura 6 - Como dever ficar o visual do STVD neste momento

 

Nas figuras 7 e 8, configuramos os arquivos stm8s.h e stm8s_conf.h para a definição do modelo que estamos programando e retiramos a detecção de falhas:

 

Figura 7 - Definindo o MCU target da nossa aplicação

 

A biblioteca implementa a detecção de falhas em tempo de execução verificando os valores de entrada de todas as funções usando uma macro assert_param. Esta macro é usada em todas as funções da biblioteca que têm pelo menos um parâmetro de entrada. Para a proposta dos artigos, no entanto, não usaremos este recurso, então será necessário comentar a linha 93:

 

Definição USE_FULL_ASSERT comentada
Figura 8 - Definição USE_FULL_ASSERT comentada

 

Drivers incluídos e com o projeto pré-configuração, é ideal nos certificarmos e compilarmos o projeto. Este processo não deve gerar nenhum warning ou error:

 

Compilando o projeto inicial
Figura 9 - Compilando o projeto inicial

 

 

Acender e apagar o LED LD1 ao apertar a Chave Táctil no PB1

 

Por mais simples que seja, creio no potencial de iniciarmos com bom embasamento da literatura de software ST para ajudar a avançarmos de forma natural nos próximos artigos. Portanto, vamos ver como a biblioteca nos ajuda no desenvolvimento deste código.

 

Configurando o Hardware do kit como a figura 10, vamos ascender o Led LD1 colocando o pino PD0 em nível lógico baixo e apaga-lo com o nível alto. Já a Chave Táctil, utilizamos o PB1, que será configurado como entrada e com pull-up interno.

 

Hardware para teste de Entrada e Saída digital
Figura 10 - Hardware para teste de Entrada e Saída digital

 

É importante também verificar as funções disponíveis e topologias elétricas de cada porta. Para isso, podemos consultar o datasheet do nosso MCU, onde constam as limitações e particularidades de cada modelo. No modelo STM8S105, a descrição dos pinos encontram-se a partir da página 26.

 

Software

 

Cientes da configuração do Hardware, cumprimos a especificação deste artigo com a programação dos arquivos abaixo:

 

  • Setup.c: Criado para inicialização do Hardware.

 

  • Setup.h: Contém definições e funções utilizadas em setup.c.

 

  • main.c: Rotina principal.

 

Aparência do STVD após a criação dos arquivos setup.c e setup.h
Figura 11 - Aparência do STVD após a criação dos arquivos setup.c e setup.h

 

Compilando e gravando este código no STM8S-Discovery, devemos ver o Led LD1 aceso continuamente e enquanto pressionarmos a Chave Táctil, apagado.

 

Gravando e Rodando o código no MCU
Figura 12 - Gravando e Rodando o código no MCU

 

Teste das IOs
Figura 13 - Teste das IOs

 

Para quem não possui o kit, podemos simular o código pela configuração em Debug Instrument > Target Settings e selecionar a opção Simulator:

 

Configuração do Simulador
Figura 14 - Configuração do Simulador

 

Podemos fazer o download deste projeto inicial STM8S_IO.rar no github, ferramenta interessante para o nosso controle de versões.

 

 

Agradecimentos

 

À toda equipe STMicroelectronics, em especial ao FAE Bruno F. Montanari e também ao Kelvin E. Shinzato, FAE da Quadrar Tecnologia, essenciais para o embasamento e escrita dos temas abordados.

Outros artigos da série

<< STM8S-Discovery - Introdução
Este post faz da série STM8S-Discovery. Leia também os outros posts da série:

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Deixe um comentário

avatar
 
  Notificações  
Notificar