Este artigo apresenta as informações básicas do microcontrolador STM8S208RB e como criar um projeto IAR para ele.
Características e especificações do STM8S208RB
O STM8S208RB possui um núcleo STM8 de 8 bits operando a uma frequência máxima de 16 MHz. Ele inclui 128 KB de memória Flash e 8 KB de RAM, tornando-o adequado para várias aplicações embarcadas. O chip suporta várias interfaces de comunicação, incluindo SPI, UART e I2C, juntamente com um ADC de 10 bits que oferece 16 canais para entradas analógicas.
| Attribute | Value |
|---|---|
| Core | 8-bit STM8 core |
| Max Frequency | 16 MHz |
| Flash Memory | 128 KB |
| RAM | 8 KB |
| GPIO Pins | Up to 16 general-purpose I/O pins |
| Timers | 2 x 16-bit timers, 1 x 8-bit timer |
| ADC | 10-bit ADC with 16 channels |
| Communication Interfaces | SPI, I2C, UART |
| Clock Sources | Internal 16 MHz, External crystal |
| Operating Voltage | 2.95V to 5.5V |
| Operating Temperature | -40°C to +125°C |
| Package Type | 32-pin LQFP |
| Power Consumption | Low-power modes supported |
Pinagem do STM8S208RB

Diagrama de blocos do STM8S208RB

Aplicação STM8S208RB
- Eletrônicos de consumo: O STM8S208RB é usado em produtos como eletrodomésticos e brinquedos, onde é necessário baixo consumo de energia e controle simples.
- Aplicações automotivas: É aplicado em sistemas automotivos para tarefas como controle de iluminação e interface de sensores.
- Controle industrial: O microcontrolador é usado para controlar máquinas e processos de automação.
- Casa inteligente: É usado em dispositivos como termostatos e sistemas de iluminação inteligentes.
- Dispositivos portáteis: devido ao seu baixo consumo de energia, é ideal para dispositivos operados por bateria.
- IoT: Pode ser encontrado em dispositivos IoT, particularmente aqueles que exigem processamento e conectividade eficientes.
- Segurança: O STM8S208RB é frequentemente usado em alarmes, câmeras de segurança e sistemas relacionados.
- Saúde: Também é utilizado em sistemas de monitorização médica.
Projeto IAR: Exemplo de LED GPIO piscando no STM8S208RB
Seguindo as etapas abaixo, você poderá implementar com sucesso o exemplo de piscar LED GPIO no STM8S208RB usando a Biblioteca Periférica Padrão ST e o compilador IAR. Este exemplo pode servir como ponto de partida para aplicações mais complexas envolvendo controle GPIO e inicialização periférica.
Ferramentas e recursos necessários:
- Biblioteca periférica padrão ST STM8S/A
- Compilador IAR para STM8
- Placa de desenvolvimento STM8S208RBT6
Configuração dos pinos LED
Neste exemplo, os LEDs integrados estão conectados aos pinos PC6 e PC7 do microcontrolador STM8S208RB.
#define LED_GPIO_PORT ((GPIO_TypeDef *)GPIOC)
#define LED_GPIO_PINS (GPIO_PIN_7 | GPIO_PIN_6 | GPIO_PIN_3)
#define LED1_ON() GPIO_WriteLow(GPIOC , GPIO_PIN_7) // Turn LED1 ON
#define LED1_OFF() GPIO_WriteHigh(GPIOC , GPIO_PIN_7) // Turn LED1 OFF
#define LED1_TOGGLE() GPIO_WriteReverse(GPIOC , GPIO_PIN_7) // Toggle LED1
#define LED2_ON() GPIO_WriteLow(GPIOC , GPIO_PIN_6) // Turn LED2 ON
#define LED2_OFF() GPIO_WriteHigh(GPIOC , GPIO_PIN_6) // Turn LED2 OFF
#define LED2_TOGGLE() GPIO_WriteReverse(GPIOC , GPIO_PIN_6) // Toggle LED2
Neste código:
- O LED1 é controlado usando PC7, e o LED2 é controlado usando PC6.
- As funções
LED1_ON(),LED1_OFF()eLED1_TOGGLE()controlam o estado do LED1, enquantoLED2_ON(),LED2_OFF()eLED2_TOGGLE()controlam o LED2.
Código do programa principal
A seguir, apresentamos o programa principal para inicializar os LEDs, alterná-los e introduzir um atraso entre cada alternância.
#include "stm8s.h"
#include "led.h"
#include "delay.h"
/* Private function prototypes -----------------------------------------------*/
void LED_Init(void); // Function to initialize the LED GPIO pins
/* Private functions ---------------------------------------------------------*/
// Function to initialize GPIO pins for the LEDs
void LED_Init(void)
{
GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); // Configure the GPIO pins as push-pull output, low speed
}
// Software delay function
void Delay(uint16_t nCount)
{
while (nCount != 0)
{
nCount--;
}
}
void main(void)
{
// Configure the internal clock to 16 MHz
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); // No prescaler; system clock = 16 MHz
LED_Init(); // Initialize the GPIO pins for LEDs
while (1)
{
// Toggle LEDs on PC6 and PC7 every 1 second
GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
delay_ms(1000); // Delay for 1000 ms (1 second)
}
}
#ifdef USE_FULL_ASSERT
// Function to report assert failures
void assert_failed(u8* file, u32 line)
{
// Optionally, report the file and line number
while (1)
{
}
}
#endif
Função de atraso
Abaixo está o arquivo fonte da função de atraso (delay.c) que fornece funções de atraso em microssegundos e milissegundos.
#include "delay.h"
// Function to create a delay of microseconds
void delay_us(unsigned int nCount) // Delay in microseconds for 16 MHz clock speed
{
nCount *= 3; // Adjust for the system clock speed (16 MHz)
while (--nCount); // Decrement nCount until it reaches zero
}
// Function to create a delay of milliseconds
void delay_ms(unsigned int ms)
{
unsigned int x, y;
for (x = ms; x > 0; x--) // Loop for each millisecond
for (y = 3147; y > 0; y--); // Inner loop for delay approximation
__asm( "nop" ); // No operation (to adjust the delay)
__asm( "nop" ); // No operation (to adjust the delay)
}
Explicação das funções de atraso:
- delay_us: Fornece um atraso em microssegundos. A duração do atraso é ajustada multiplicando o valor de entrada por 3 para corresponder à velocidade do clock do sistema de 16 MHz.
- delay_ms: Proporciona um atraso aproximado em milissegundos usando loops aninhados. Este método é adequado para necessidades de temporização simples, mas para maior precisão, devem ser utilizados temporizadores de hardware.
Etapas de configuração e compilação do projeto
Baixe e configure o STSW-STM8069:
- Certifique-se de ter baixado a Biblioteca de Periféricos Padrão STM8S (STSW-STM8069) versão 2.3.1 do site oficial da ST.
- Inclua os arquivos de cabeçalho apropriados da biblioteca, como
stm8s.h,stm8s_gpio.h, etc., no seu projeto.
Configuração do compilador IAR:
- Abra o IAR Embedded Workbench e crie um novo projeto para STM8S208RB.
- Selecione o dispositivo correto (STM8S208RB) e certifique-se de que o conjunto de ferramentas esteja configurado para STM8.
- Adicione os arquivos fonte necessários:
main.c,led.c,delay.c, etc. - Inclua a biblioteca de periféricos padrão STM8S no seu projeto. Certifique-se de que os caminhos corretos para os arquivos da biblioteca estejam definidos.
Compile e grave:
- Compile o projeto no IAR. Resolva quaisquer erros de compilação, se necessário.
- Grave o firmware na placa de desenvolvimento STM8S208RB usando um programador/depurador apropriado (por exemplo, ST-Link).
Teste e depuração:
- Após gravar o código, observe os LEDs em PC6 e PC7. Os LEDs devem piscar com um intervalo de 1 segundo.
- Use um depurador ou saída serial (se disponível) para inspecionar o comportamento dos pinos GPIO e verificar a funcionalidade das funções de atraso.
Sugestões e notas adicionais
Usando temporizadores para atrasos: O atraso baseado em software é simples, mas ineficiente para aplicações mais complexas. Para atrasos mais precisos e eficientes, considere usar temporizadores de hardware em vez de atrasos de software.
Otimização de energia: Se sua aplicação requer baixo consumo de energia, você pode explorar os modos de baixa energia do chip STM8S208RB, especialmente quando o sistema está ocioso (como durante o piscar do LED).
Depuração: você pode definir pontos de interrupção no código para percorrer o programa e monitorar os valores das variáveis. Isso é particularmente útil para verificar o tempo dos atrasos e o estado dos pinos GPIO.
Definições dos pinos GPIO: Certifique-se de que o
LED_GPIO_PORTeLED_GPIO_PINScorrespondam à configuração real dos pinos da sua placa de desenvolvimento. Por exemplo, confirme se PC6 e PC7 são os pinos corretos para os seus LEDs.




