¿Qué son las placas Nucleo STM8?
Las placas STM8 Nucleo son una gama de placas de desarrollo diseñadas por STMicroelectronics específicamente para sus microcontroladores STM8. Estas placas sirven como una plataforma cómoda y flexible para crear y probar aplicaciones basadas en la familia de microcontroladores STM8. Con una gran variedad de características y opciones de conectividad, las placas STM8 Nucleo proporcionan a los desarrolladores un entorno adecuado para crear prototipos de sus proyectos y evaluar el rendimiento de los microcontroladores STM8. Estas placas suelen venir equipadas con un depurador/programador, pines GPIO e interfaces UART, I2C y SPI, lo que permite a los desarrolladores conectarse e interactuar fácilmente con diversos periféricos y sensores. Las placas STM8 Nucleo se utilizan ampliamente en la industria electrónica por su facilidad de uso y compatibilidad con el ecosistema STM8.
NUCLEO-8L152R8 y NUCLEO-8S208RB
Las placas NUCLEO-8L152R8 y NUCLEO-8S208RB son las primeras placas Nucleo-64 que integran microcontroladores (MCU) STM8, lo que permite diseños de prototipos flexibles gracias a configuraciones compactas de MCU. La diferencia significativa entre estos dos modelos radica en su capacidad de memoria flash. El primero integra un MCU STM8L152R8T6 con 64 kB de memoria flash, mientras que el segundo utiliza un STM8S208RBT6 con 128 kB de almacenamiento. También son las primeras placas de desarrollo STM8 con un conector Arduino™ Uno V3, lo que permite a los desarrolladores utilizar shields familiares, plugins gratuitos y ejemplos de programación populares. Además, en colaboración con Cosmic, proporcionamos compiladores gratuitos con STVD-STM8 IDE o Arduino IDE, lo que permite a los desarrolladores crear software para nuestras MCU STM8 en C++ por primera vez sin necesidad de adquirir una cadena de herramientas.

Hemos descubierto que las placas STM32 Nucleo son especialmente populares para el diseño y desarrollo de prototipos. También ofrecen una amplia selección de placas de expansión que ahora son compatibles con NUCLEO-8L152R8 y NUCLEO-8S208RB, ya que todos los modelos Nucleo proporcionan conectores Arduino. Esto significa que los equipos de ingeniería pueden reutilizar el mismo hardware, lo que supone un ahorro de costes y, lo que es más importante, una reducción del tiempo de desarrollo, ya que están familiarizados con las extensiones apilables de las nuevas placas STM8 Nucleo. Por lo tanto, ahora es más fácil añadir funcionalidades a nuestros sistemas de 8 bits, lo que permite diseños más complejos e inteligentes en paquetes cada vez más pequeños.
Especificaciones de STM8 Nucleo
- Placa con tipos de MCU:
NUCLEO-8L152R8: basada en la MCU STM8L152R8T6 de 8 bits de STMicroelectronics, que funciona a una frecuencia de 16 MHz, con 64 kB de memoria flash, 2 kB de EEPROM y 4 kB de SRAM.
NUCLEO-8S208RB: basada en la MCU STM8S208RBT6 de 8 bits de STMicroelectronics, que funciona a una frecuencia de 24 MHz, con 128 kB de memoria flash, 2 kB de EEPROM y 6 kB de SRAM.
4 LED: indicador de conexión USB (LD4), indicador STLINK de 5 V (LD3), LED de usuario (LD2) e indicador de alimentación (LD1).
2 botones: botones de usuario y botón RESET.
Oscilador de cristal externo de 32,768 kHz, exclusivo de la placa de desarrollo NUCLEO-8L152R8.
USB: interfaz microUSB de 1 canal como puerto COM virtual, interfaz de memoria en chip e interfaz de depuración.
- Conectores de expansión:
Interfaz Arduino UNO V3.
Interfaz de expansión ST morpho, que incluye todas las E/S para STM8.
Depuración: depurador y programador ST-LINK/V2-1 integrado con conector SWIM y puerto microUSB.
Alimentación: alimentado por USB VBUS o fuente de alimentación externa (3,3 V, 5 V, 7-12 V).
Puntos de acceso para la gestión de la alimentación.
Proyecto de placa de desarrollo STM8 Nucleo-64
Este proyecto describe cómo controlar una placa de desarrollo STM8 Nucleo-64 desde una ventana de terminal que se ejecuta en un PC. El terminal se conecta al UART del STM8S208RBT6 (para NUCLEO-8S208RB) o del STM8L152R8T6 (para NUCLEO-8L152R8) mediante un cable RS232.
Después de añadir los componentes necesarios a la placa de desarrollo y descargar el software de la aplicación, los usuarios pueden gestionar los temporizadores GPIO y TIM3 de las series STM8S o STM8L y configurar la salida del zumbador utilizando el software del terminal.

Componentes necesarios
Para ejecutar la aplicación de demostración del terminal de la placa de desarrollo STM8 Nucleo-64 se necesitan los siguientes componentes:
- Ventana de terminal ejecutándose en un PC: el software de emulación de terminal puede ser Windows HyperTerminal, TeraTerm Pro u otro software de terminal.
- Cable RS232 null modem (con líneas de transmisión y recepción cruzadas).
Configuración de la placa de desarrollo NUCLEO-8S208RB
Antes de ejecutar la aplicación, la placa de desarrollo NUCLEO-8S208RB (basada en el dispositivo STM8S208RBT6) debe configurarse para habilitar la salida del zumbador. La salida del zumbador es una función multiplexada del STM8S208RBT6. Esta función se habilita estableciendo el bit de opción de reasignación AFR7 en el byte de opción OPT2 en «1».
Nota: La placa de desarrollo NUCLEO-8L152R8 (basada en el dispositivo STM8L152R8T6) no requiere que los usuarios comprueben o activen la función de reasignación o el zumbador.
Instrucciones de aplicación
Requisitos de hardware
Esta aplicación utiliza el LED integrado (LD2) y la resistencia conectada (R1) en la placa STM8 Nucleo-64. Los componentes pasivos externos necesarios para la aplicación se enumeran en la tabla siguiente:
| Component | Value |
|---|---|
| Buzzer B1 | - |
| Capacitors C1, C2, C3, C4, C5 | 100 nF |
| DB9 Connector | - |
La aplicación también utiliza un controlador/receptor RS232 ST232B alimentado a 5 V (para obtener más detalles, consulte la tabla siguiente). Este componente adicional es esencial porque el puerto COM del PC funciona con una fuente de alimentación estándar de 12 V. Esto es incompatible con las entradas/salidas UART de los dispositivos de las series STM8S o STM8L, que funcionan a 5 V. El dispositivo se presenta en un paquete SO16, que coincide con el paquete de la placa de desarrollo STM8 Nucleo-64. Para obtener más información sobre el ST232B, consulte la hoja de datos del ST232B.
| Model | Component Description | Package |
|---|---|---|
| ST232B | Ultra-Fast, Ultra-Low-Power 5V RS232 Driver/Receiver for UART 5/12V Level Conversion | SO16 |
Esquema de aplicación
El siguiente diagrama ilustra el esquema eléctrico de la aplicación. Si el cable RS232 no es un cable de módem nulo (las líneas de transmisión y recepción no están cruzadas), conecte el pin 14 de U1 al pin 2 de DB9 y el pin 13 de U1 al pin 3 de DB9.
Normas de solicitud
Esta aplicación establece una comunicación estándar entre el microcontrolador STM8S208RBT6 o STM8L152R8T6 y la ventana de terminal que se ejecuta en un PC. La comunicación se realiza mediante el protocolo RS232 a través del UART del dispositivo STM8. Tanto la ventana de terminal como el UART deben configurarse de la misma manera.
Ejecutar la aplicación
Para ejecutar esta aplicación, siga estos pasos:
- Inicie y configure una ventana de terminal en su PC (consulte la sección B: Configurar la ventana de terminal, en este caso, utilizando Windows HyperTerminal).
- Compile y ejecute el firmware de la aplicación utilizando ST Visual Develop (STVD) u otra cadena de herramientas.
- Conecte el PC a la placa de desarrollo STM8 Nucleo-64 utilizando un cable RS232.
- Una vez iniciada la aplicación, se mostrará un menú en Windows HyperTerminal. Este menú permite a los usuarios:
- Encender o apagar el LED LD2.
- Configurar LD2 en modo intermitente.
- Activar/desactivar el zumbador y seleccionar la frecuencia del sonido del zumbador.
Toda la información que se muestra en este menú es enviada por el microcontrolador de la serie STM8S o STM8L. Cuando se pulsa una tecla en HyperTerminal, el valor ASCII correspondiente se envía al microcontrolador, que luego lo decodifica.
Secuencia de comunicación entre la placa de desarrollo STM8 Nucleo-64 y el terminal
- El microcontrolador de la serie STM8S o STM8L envía la cadena «Introduzca su elección» al software emulador de terminal del PC.
- El terminal muestra la cadena «Introduzca su elección».
- El usuario pulsa la tecla «2» del teclado.
- El software del emulador de terminal envía el código ASCII correspondiente (0x52) al microcontrolador (véase el Apéndice A: Códigos de caracteres ASCII estándar).
- El microcontrolador decodifica los datos recibidos y envía de vuelta el código 0x52 para que se muestre en el terminal y almacena el valor «2» en la memoria.
- El software emulador de terminal recibe el código 0x52 y muestra «2».
- El usuario pulsa la tecla «Intro».
- El software del emulador de terminal envía de vuelta el código 0x0D correspondiente al retorno de carro (véase el Apéndice A: Códigos de caracteres ASCII estándar).
- El microcontrolador de la serie STM8S o STM8L decodifica los datos recibidos, envía de vuelta el código 0x0D para que se muestre en el terminal y realiza la operación asociada a la opción 2.
HyperTerminal de Windows
Periféricos STM8S y STM8L
Este ejemplo de aplicación utiliza las bibliotecas de firmware estándar STM8S y STM8L para controlar funciones generales. En esta aplicación se utilizan los siguientes periféricos:
- Temporizador 3 (TIM3): el temporizador TIM3 se configura como base de tiempo, con interrupciones habilitadas para controlar la velocidad de parpadeo de LD2.
- GPIO: los GPIO se utilizan para conectar la MCU al hardware externo. El puerto PC5 para la serie STM8 o PB5 para la serie STM8L se configura como una salida push-pull para controlar LD2.
- BEEPER: Para accionar el zumbador, el periférico BEEPER emite una señal de 1, 2 o 4 kHz en el pin de salida BEEP.
- ART3 para la serie STM8S o USART3 para la serie STM8L: Se utiliza para la comunicación con la ventana de terminal que se ejecuta en el PC.
ART3 o USART3 deben configurarse de la siguiente manera:
- Velocidad en baudios = 960
- Longitud de datos = 8 bits
- 1 bit de parada
- Sin paridad
- Habilitar recepción y transmisión
(Nota: si se utiliza la serie STM8L, se debe desactivar el reloj USART3).
La comunicación se gestiona mediante sondeo para cada operación de recepción y transmisión.
(Nota: La ventana del terminal y el periférico UART del dispositivo STM8 deben configurarse con la misma velocidad en baudios, longitud de datos, bits de parada y paridad).
Configuración de la biblioteca de firmware estándar STM8
Biblioteca de firmware estándar de la serie STM8S
El archivo stm8s_conf.h de la biblioteca de firmware estándar de la serie STM8S permite habilitar funciones periféricas para su uso en la aplicación mediante la configuración de la biblioteca. Es necesario declarar las siguientes instrucciones de definición:
- #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 estándar de la serie STM8L
El archivo stm8l_conf.h de la biblioteca de firmware estándar de la serie STM8L permite habilitar funciones periféricas para su uso en la aplicación mediante la configuración de la biblioteca. Es necesario declarar las siguientes instrucciones de inclusión:
- #include "stm8l15x_gpio.h"
- #include "stm8l15x_tim2.h"
- #include "stm8l15x_tim3.h"
- #include "stm8l15x_beep.h"
- #include "stm8l15x_usart.h"
Diagrama de flujo del software de aplicación
This section explains the main loop of the application software and the functions controlling data reception/sending to/from the terminal:
- App_Menu: This function is used to display a menu on the terminal and manage user input.
- SerialPutString: This function is used to send strings to the terminal.
- SerialPutChar: This function is used to send individual characters to the terminal.
- GetInputString: This function is used to receive and store strings sent from the terminal.
- GetIntegerInput: This function is used to receive integers from the terminal.
- Get_Key: This function returns the corresponding hexadecimal code when a key is pressed.
Main Function of the Application
The main function of the application configures STM8S or STM8L series peripherals and enables standard interrupts for all peripherals used by the application. After initialization, the main program displays the application menu on the terminal window.

App_Menu Function
The App_Menu function is the core of the application. It displays a menu on the terminal, allowing configuration of GPIO, TIM3, and the buzzer. App_Menu calls GetInputString, GetIntegerInput, and SerialPutString to send and receive data via the RS232 interface.

GetInputString Function
The GetInputString function is used to receive and store strings sent from the terminal window. This function relies on the Get_Key function to obtain and decode each character (see Appendix for details). Different actions are taken based on the ASCII value of the character:
If ASCII code = ‘\b’ (backspace): The terminal has sent a backspace. If the string is not empty, it deletes the last character from the string.
If ASCII code is within {0…9} or {A…Z}: The character is stored in the string.
If ASCII code = ‘\r’ (carriage return): The GetInputString function stores a «string end» value ‘\0’ at the end of the string. The maximum number of ASCII codes stored in the buffP[bytes_read] buffer is reached. The software erases the recorded string and waits for another input from the terminal.
Get_Key Function
The Get_Key function is used to detect keyboard input on the terminal by polling the UART RXNE flag. It returns the received value.

SerialPutString and SerialPutChar Functions
SerialPutString is used to send strings to the terminal via UART. String characters are sent one by one using the SerialPutChar function, as described in the flowchart.
GetIntegerInput Function
The GetIntegerInput function checks whether the incoming data corresponds to an integer. If it does, the data is stored in memory; otherwise, the user is prompted to enter new data.




