STM8S-Discovery – I/O’s

No primeiro post descrevemos um pouco do Hardware STM8S-Discovery. Confira como criar um código exemplo para 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.

STM8S Discovery IO 02
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:

STM8S Discovery IO 07
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

Graduado em Tecnologia Eletrônica pela FATEC Santo André, atua no mercado de gateways industriais auxiliando em projetos com base na tecnologia eletrônica com ênfase em sistemas de comunicação wireless.

Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments

WEBINAR

Imagens de Ultrassom: Princípios e Aplicações

DATA: 26/10 ÀS 19:30 H