O que são as placas STM8 Nucleo?
As placas STM8 Nucleo referem-se a uma gama de placas de desenvolvimento projetadas pela STMicroelectronics especificamente para seus microcontroladores STM8. Essas placas servem como uma plataforma conveniente e flexível para construir e testar aplicações baseadas na família de microcontroladores STM8. Com uma variedade de recursos e opções de conectividade, as placas STM8 Nucleo fornecem aos desenvolvedores um ambiente adequado para prototipar seus projetos e avaliar o desempenho dos microcontroladores STM8. Essas placas geralmente vêm equipadas com um depurador/programador, pinos GPIO, UART, I2C e interfaces SPI, permitindo que os desenvolvedores se conectem e interfacem facilmente com vários periféricos e sensores. As placas STM8 Nucleo são amplamente utilizadas na indústria eletrônica por sua facilidade de uso e compatibilidade com o ecossistema STM8.
NUCLEO-8L152R8 e NUCLEO-8S208RB
As NUCLEO-8L152R8 e NUCLEO-8S208RB são as primeiras placas Nucleo-64 a integrar microcontroladores STM8 (MCUs), permitindo designs de protótipos flexíveis por meio de configurações de MCU compactas. A diferença significativa entre esses dois modelos reside em sua capacidade de memória flash. A primeira integra um MCU STM8L152R8T6 com 64 kB de memória flash, enquanto a segunda utiliza um STM8S208RBT6 com 128 kB de armazenamento. Eles também são as primeiras placas de desenvolvimento STM8 com um conector Arduino™ Uno V3, permitindo que os desenvolvedores usem shields familiares, plugins gratuitos e exemplos de programação populares. Além disso, em colaboração com a Cosmic, fornecemos compiladores gratuitos com STVD-STM8 IDE ou Arduino IDE, permitindo que os desenvolvedores desenvolvam software para nossos MCUs STM8 em C++ pela primeira vez sem comprar uma cadeia de ferramentas.

Descobrimos que as placas STM32 Nucleo são particularmente populares para design e desenvolvimento de protótipos. Eles também oferecem uma ampla seleção de placas de expansão que agora são compatíveis com NUCLEO-8L152R8 e NUCLEO-8S208RB, pois todos os modelos Nucleo fornecem conectores Arduino. Isso significa que as equipes de engenharia podem reutilizar o mesmo hardware, economizando custos e, mais importante, reduzindo o tempo de desenvolvimento, pois já estão familiarizadas com o empilhamento de extensões nas novas placas STM8 Nucleo. Portanto, agora é mais fácil adicionar funcionalidade aos nossos sistemas de 8 bits, permitindo designs mais complexos e inteligentes em pacotes cada vez menores.
Especificações do STM8 Nucleo
- Placa com tipos de MCU:
NUCLEO-8L152R8 – Baseado no MCU STM8L152R8T6 de 8 bits da STMicroelectronics, operando em uma frequência de 16 MHz, com 64 kB de flash, 2 kB de EEPROM e 4 kB de SRAM.
NUCLEO-8S208RB – Baseado no MCU STM8S208RBT6 de 8 bits da STMicroelectronics, operando em uma frequência de 24 MHz, com 128 kB de flash, 2 kB de EEPROM e 6 kB de SRAM.
4x LEDs – Indicador de conexão USB (LD4), indicador STLINK de 5V (LD3), LED de usuário (LD2) e indicador de energia (LD1).
2 x botões – Botões de usuário e um botão RESET.
Oscilador de cristal externo de 32,768 kHz, exclusivo da placa de desenvolvimento NUCLEO-8L152R8.
USB – Interface microUSB de 1 canal como porta COM virtual, interface de memória on-chip e interface de depuração.
- Conectores de expansão:
Interface Arduino UNO V3.
Interface de expansão ST morpho, incluindo todas as E/Ss para STM8.
Depuração – Depurador e programador ST-LINK/V2-1 integrado com conector SWIM e porta microUSB.
Energia – Alimentado por USB VBUS ou energia externa (3,3V, 5V, 7 – 12V).
Pontos de acesso de gerenciamento de energia.
Projeto da placa de desenvolvimento STM8 Nucleo-64
Este projeto descreve como controlar uma placa de desenvolvimento STM8 Nucleo-64 a partir de uma janela de terminal executada em um PC. O terminal é conectado à UART de STM8S208RBT6 (para NUCLEO-8S208RB) ou STM8L152R8T6 (para NUCLEO-8L152R8) usando um cabo RS232.
Após adicionar os componentes necessários à placa de desenvolvimento e baixar o software da aplicação, os usuários podem gerenciar os GPIOs e os temporizadores TIM3 das séries STM8S ou STM8L e configurar a saída do buzzer usando software de terminal.

Componentes Necessários
Os seguintes componentes são necessários para executar a aplicação de demonstração do terminal da placa de desenvolvimento STM8 Nucleo-64:
- Janela de terminal executada em um PC: Software de emulação de terminal pode ser Windows HyperTerminal, TeraTerm Pro ou outro software de terminal.
- Cabo null modem RS232 (com linhas de transmissão e recepção cruzadas).
Configurando a Placa de Desenvolvimento NUCLEO-8S208RB
Antes de executar a aplicação, a placa de desenvolvimento NUCLEO-8S208RB (baseada no dispositivo STM8S208RBT6) deve ser configurada para habilitar a saída do buzzer. A saída do buzzer é uma função multiplexada do STM8S208RBT6. Esta função é habilitada definindo o bit de opção remap AFR7 no byte de opção OPT2 para “1.”
Observação: A placa de desenvolvimento NUCLEO-8L152R8 (baseada no dispositivo STM8L152R8T6) não exige que os usuários verifiquem ou ativem a função remap ou o buzzer.
Instruções da Aplicação
Requisitos de Hardware
Esta aplicação utiliza o LED onboard (LD2) e o resistor conectado (R1) na placa STM8 Nucleo-64. Os componentes passivos externos exigidos pela aplicação estão listados na tabela abaixo:
| Component | Value |
|---|---|
| Buzzer B1 | - |
| Capacitors C1, C2, C3, C4, C5 | 100 nF |
| DB9 Connector | - |
A aplicação também utiliza um driver/receptor RS232 alimentado por 5V ST232B (para mais detalhes, consulte a tabela abaixo). Este componente adicional é essencial porque a porta COM do PC opera em uma fonte de alimentação padrão de 12V. Isso é incompatível com as entradas/saídas UART dos dispositivos das séries STM8S ou STM8L, que operam a 5V. O dispositivo está em um pacote SO16, correspondendo ao pacote da placa de desenvolvimento STM8 Nucleo-64. Para obter mais informações sobre o ST232B, consulte o datasheet do ST232B.
| Model | Component Description | Package |
|---|---|---|
| ST232B | Ultra-Fast, Ultra-Low-Power 5V RS232 Driver/Receiver for UART 5/12V Level Conversion | SO16 |
Esquema da Aplicação
O seguinte diagrama ilustra o esquema elétrico da aplicação. Se o cabo RS232 não for um cabo null modem (as linhas de transmissão e recepção não estiverem cruzadas), conecte o pino 14 de U1 ao pino 2 de DB9 e o pino 13 de U1 ao pino 3 de DB9.
Regras da Aplicação
Esta aplicação estabelece comunicação padrão entre o microcontrolador STM8S208RBT6 ou STM8L152R8T6 e a janela de terminal executada em um PC. A comunicação é feita usando o protocolo RS232 através da UART do dispositivo STM8. Tanto a janela de terminal quanto a UART devem ser configuradas da mesma forma.
Executando a Aplicação
Para executar esta aplicação, siga estes passos:
- Inicie e configure uma janela de terminal em seu PC (consulte a seção B: Configure a Janela de Terminal, neste caso, usando o Windows HyperTerminal).
- Compile e execute o firmware da aplicação usando o ST Visual Develop (STVD) ou outra toolchain.
- Conecte o PC à placa de desenvolvimento STM8 Nucleo-64 usando um cabo RS232.
- Após a aplicação iniciar, um menu será exibido no Windows HyperTerminal. Este menu permite que os usuários:
- Ligue ou desligue o LED LD2.
- Defina o LD2 para o modo de pisca-pisca.
- Habilite/desabilite o buzzer e selecione a frequência do som do buzzer.
Todas as informações exibidas neste menu são enviadas pelo microcontrolador das séries STM8S ou STM8L. Quando uma tecla é pressionada no HyperTerminal, o valor ASCII correspondente é enviado ao microcontrolador, que então o decodifica.
Sequência de Comunicação entre a Placa de Desenvolvimento STM8 Nucleo-64 e o Terminal
- O microcontrolador da série STM8S ou STM8L envia a string “Digite sua escolha” para o software emulador de terminal do PC.
- O terminal exibe a string “Digite sua escolha.”
- O usuário pressiona a tecla “2” no teclado.
- O software emulador de terminal envia o código ASCII correspondente (0x52) de volta para o microcontrolador (veja o Apêndice A: Códigos de Caracteres ASCII Padrão).
- O microcontrolador decodifica os dados recebidos e envia de volta o código 0x52 para ser exibido no terminal e armazena o valor “2” na memória.
- O software emulador de terminal recebe o código 0x52 e exibe “2.”
- O usuário pressiona a tecla “Return”.
- O software emulador de terminal envia de volta o código 0x0D correspondente ao retorno de carro (veja o Apêndice A: Códigos de Caracteres ASCII Padrão).
- O microcontrolador da série STM8S ou STM8L decodifica os dados recebidos, envia de volta o código 0x0D para ser exibido no terminal e executa a operação associada à opção 2.
Windows HyperTerminal
Periféricos STM8S e STM8L
Este exemplo de aplicação usa as bibliotecas de firmware padrão STM8S e STM8L para controlar funções gerais. Os seguintes periféricos são usados nesta aplicação:
- Timer3 (TIM3): O timer TIM3 é configurado como uma base de tempo, com interrupções habilitadas para controlar a velocidade de piscar do LD2.
- GPIOs: GPIOs são usados para conectar o MCU a hardware externo. A porta PC5 para a série STM8 ou PB5 para a série STM8L é configurada como uma saída push-pull para acionar o LD2.
- BEEPER: Para acionar o buzzer, o periférico BEEPER emite um sinal de 1, 2 ou 4 kHz no pino de saída BEEP.
- ART3 para a série STM8S ou USART3 para a série STM8L: Usado para comunicação com a janela do terminal em execução no PC.
ART3 ou USART3 precisa ser configurado da seguinte forma:
- Taxa de baud = 960
- Comprimento dos dados = 8 bits
- 1 bit de parada
- Sem paridade
- Habilitar receber e transmitir
(Observação: Se estiver usando a série STM8L, o clock USART3 deve ser desabilitado.)
A comunicação é gerenciada por polling para cada operação de receber e transmitir.
(Observação: A janela do terminal e o periférico UART do dispositivo STM8 devem ser configurados com a mesma taxa de baud, comprimento dos dados, bits de parada e paridade.)
Configuração da Biblioteca de Firmware Padrão STM8
Biblioteca de Firmware Padrão da Série STM8S
O arquivo stm8s_conf.h da biblioteca de firmware padrão da série STM8S permite habilitar funções de periféricos para uso na aplicação configurando a biblioteca. As seguintes declarações de definição precisam ser declaradas:
- #define _GPIO 1 para habilitar GPIO
- #define _TIM3 1 para habilitar TIM3
- #define _BEEPER 1 para habilitar BEEPER
- #define _UART3 1 para habilitar UART3
Biblioteca de Firmware Padrão da Série STM8L
O arquivo stm8l_conf.h da biblioteca de firmware padrão da série STM8L permite habilitar funções de periféricos para uso na aplicação configurando a biblioteca. As seguintes declarações de inclusão precisam ser declaradas:
- #include “stm8l15x_gpio.h”
- #include “stm8l15x_tim2.h”
- #include “stm8l15x_tim3.h”
- #include “stm8l15x_beep.h”
- #include “stm8l15x_usart.h”
Fluxograma do Software da Aplicação
Esta seção explica o loop principal do software da aplicação e as funções que controlam a recepção/envio de dados para/do terminal:
- App_Menu: Esta função é usada para exibir um menu no terminal e gerenciar a entrada do usuário.
- SerialPutString: Esta função é usada para enviar strings para o terminal.
- SerialPutChar: Esta função é usada para enviar caracteres individuais para o terminal.
- GetInputString: Esta função é usada para receber e armazenar strings enviadas do terminal.
- GetIntegerInput: Esta função é usada para receber inteiros do terminal.
- Get_Key: Esta função retorna o código hexadecimal correspondente quando uma tecla é pressionada.
Função Principal da Aplicação
A função principal da aplicação configura os periféricos da série STM8S ou STM8L e habilita as interrupções padrão para todos os periféricos usados pela aplicação. Após a inicialização, o programa principal exibe o menu da aplicação na janela do terminal.

Função App_Menu
A função App_Menu é o núcleo da aplicação. Ela exibe um menu no terminal, permitindo a configuração de GPIO, TIM3 e o buzzer. App_Menu chama GetInputString, GetIntegerInput e SerialPutString para enviar e receber dados através da interface RS232.

Função GetInputString
A função GetInputString é usada para receber e armazenar strings enviadas da janela do terminal. Esta função depende da função Get_Key para obter e decodificar cada caractere (veja o Apêndice para detalhes). Diferentes ações são tomadas com base no valor ASCII do caractere:
Se o código ASCII = ‘\\b’ (backspace): O terminal enviou um backspace. Se a string não estiver vazia, ela exclui o último caractere da string.
Se o código ASCII estiver dentro de {0…9} ou {A…Z}: O caractere é armazenado na string.
Se o código ASCII = ‘\\r’ (carriage return): A função GetInputString armazena um valor de “fim de string” ‘\\0’ no final da string. O número máximo de códigos ASCII armazenados no buffer buffP[bytes_read] é atingido. O software apaga a string gravada e aguarda outra entrada do terminal.
Função Get_Key
A função Get_Key é usada para detectar a entrada do teclado no terminal, verificando o sinalizador UART RXNE. Ela retorna o valor recebido.

Funções SerialPutString e SerialPutChar
SerialPutString é usado para enviar strings para o terminal via UART. Os caracteres da string são enviados um por um usando a função SerialPutChar, conforme descrito no fluxograma.
Função GetIntegerInput
A função GetIntegerInput verifica se os dados recebidos correspondem a um inteiro. Se corresponderem, os dados são armazenados na memória; caso contrário, o usuário é solicitado a inserir novos dados.





