Este artículo presenta la información básica del microcontrolador STM8S208RB y cómo crear un proyecto IAR para él.
Características y Especificaciones del STM8S208RB
El STM8S208RB tiene un núcleo STM8 de 8 bits que funciona a una frecuencia máxima de 16 MHz. Incluye 128 KB de memoria Flash y 8 KB de RAM, lo que lo hace adecuado para diversas aplicaciones integradas. El chip soporta múltiples interfaces de comunicación, incluyendo SPI, UART e I2C, junto con un ADC de 10 bits que ofrece 16 canales 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 |
Asignación de Pines del STM8S208RB

Diagrama de Bloques del STM8S208RB

Aplicación del STM8S208RB
- Electrónica de Consumo: El STM8S208RB se utiliza en productos como electrodomésticos y juguetes, donde se necesita un control simple y de bajo consumo.
- Aplicaciones Automotrices: Se aplica en sistemas automotrices para tareas como el control de iluminación y la interfaz de sensores.
- Control Industrial: El microcontrolador se utiliza para controlar máquinas y procesos de automatización.
- Hogar Inteligente: Se utiliza en dispositivos como termostatos y sistemas de iluminación inteligente.
- Dispositivos Portátiles: Dado su bajo consumo de energía, es ideal para dispositivos alimentados por batería.
- IoT: Se puede encontrar en dispositivos IoT, particularmente aquellos que requieren procesamiento y conectividad eficientes.
- Seguridad: El STM8S208RB se utiliza a menudo en alarmas, cámaras de seguridad y sistemas relacionados.
- Salud: También encuentra uso en sistemas de monitoreo médico.
Proyecto IAR: Ejemplo de Parpadeo de LED GPIO en STM8S208RB
Siguiendo los pasos a continuación, deberías poder implementar con éxito el ejemplo de parpadeo de LED GPIO en el STM8S208RB utilizando la Biblioteca Periférica Estándar de ST y el compilador IAR. Este ejemplo puede servir como punto de partida para aplicaciones más complejas que involucren el control GPIO y la inicialización de periféricos.
Herramientas y Recursos Requeridos:
- Biblioteca Periférica Estándar ST STM8S/A
- Compilador IAR para STM8
- Placa de Desarrollo STM8S208RBT6
Configuración del Pin del LED
En este ejemplo, los LEDs integrados están conectados a los pines PC6 y PC7 del 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
En este código:
- LED1 se controla usando PC7, y LED2 se controla usando PC6.
- Las funciones
LED1_ON(),LED1_OFF(), yLED1_TOGGLE()controlan el estado del LED1, mientras queLED2_ON(),LED2_OFF(), yLED2_TOGGLE()controlan el LED2.
Código del Programa Principal
El siguiente es el programa principal para inicializar los LEDs, alternarlos e introducir un retardo entre cada alternancia.
#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
Función de Retardo
A continuación se muestra el archivo fuente de la función de retardo (delay.c) que proporciona funciones de retardo de microsegundos y milisegundos.
#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)
}
Explicación de las Funciones de Retardo:
- delay_us: Proporciona un retardo en microsegundos. La duración del retardo se ajusta multiplicando el valor de entrada por 3 para coincidir con la velocidad del reloj del sistema de 16 MHz.
- delay_ms: Proporciona un retardo aproximado en milisegundos usando bucles anidados. Este método es adecuado para necesidades de temporización simples, pero para mayor precisión, se deben usar temporizadores de hardware.
Pasos de Configuración y Compilación del Proyecto
Descargar e Instalar STSW-STM8069:
- Asegúrese de haber descargado la Biblioteca Periférica Estándar STM8S (STSW-STM8069) versión 2.3.1 desde el sitio web oficial de ST.
- Incluya los archivos de cabecera apropiados de la biblioteca, como
stm8s.h,stm8s_gpio.h, etc., en su proyecto.
Configuración del Compilador IAR:
- Abra IAR Embedded Workbench y cree un nuevo proyecto para STM8S208RB.
- Seleccione el dispositivo correcto (STM8S208RB) y asegúrese de que la cadena de herramientas esté configurada para STM8.
- Agregue los archivos fuente necesarios:
main.c,led.c,delay.c, etc. - Incluya la Biblioteca Periférica Estándar STM8S en su proyecto. Asegúrese de que las rutas correctas a los archivos de la biblioteca estén configuradas.
Compilar y Cargar (Flash):
- Compile el proyecto en IAR. Resuelva cualquier error en tiempo de compilación si es necesario.
- Cargue el firmware en su placa de desarrollo STM8S208RB utilizando un programador/depurador apropiado (p. ej., ST-Link).
Pruebas y Depuración:
- Después de cargar el código, observe los LEDs en PC6 y PC7. Los LEDs deben parpadear con un intervalo de 1 segundo.
- Use un depurador o salida serial (si está disponible) para inspeccionar el comportamiento de los pines GPIO y verificar la funcionalidad de las funciones de retardo.
Sugerencias y Notas Adicionales
Uso de Temporizadores para Retraso: El retardo basado en software es simple pero ineficiente para aplicaciones más complejas. Para retrasos más precisos y eficientes, considere usar temporizadores de hardware en lugar de retrasos de software.
Optimización de Energía: Si su aplicación requiere bajo consumo de energía, es posible que desee explorar los modos de bajo consumo del chip STM8S208RB, especialmente cuando el sistema está inactivo (como durante el parpadeo del LED).
Depuración: Puede establecer puntos de interrupción en el código para recorrer el programa y monitorear los valores de las variables. Esto es particularmente útil para verificar el tiempo de los retrasos y el estado de los pines GPIO.
Definiciones de Pines GPIO: Asegúrese de que las definiciones de
LED_GPIO_PORTyLED_GPIO_PINScoincidan con el diagrama de pines real de su placa de desarrollo. Por ejemplo, confirme que PC6 y PC7 son los pines correctos para sus LEDs.




