Questo articolo introduce le informazioni di base del microcontrollore STM8S208RB e come creare un progetto IAR per esso.
Caratteristiche e specifiche di STM8S208RB
STM8S208RB ha un core STM8 a 8 bit che funziona a una frequenza massima di 16 MHz. Include 128 KB di memoria Flash e 8 KB di RAM, rendendolo adatto a varie applicazioni embedded. Il chip supporta più interfacce di comunicazione, tra cui SPI, UART e I2C, insieme a un ADC a 10 bit che offre 16 canali per ingressi analogici.
| 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 |
Schema piedini di STM8S208RB

Diagramma a blocchi di STM8S208RB

Applicazione di STM8S208RB
- Elettronica di consumo: STM8S208RB è utilizzato in prodotti come elettrodomestici e giocattoli, dove sono necessari basso consumo energetico e controllo semplice.
- Applicazioni automobilistiche: è applicato nei sistemi automobilistici per attività come il controllo dell’illuminazione e l’interfacciamento dei sensori.
- Controllo industriale: il microcontrollore è utilizzato per controllare macchine e processi di automazione.
- Casa intelligente: è utilizzato in dispositivi come termostati e sistemi di illuminazione intelligente.
- Dispositivi portatili: dato il suo basso consumo energetico, è ideale per dispositivi alimentati a batteria.
- IoT: può essere trovato in dispositivi IoT, in particolare quelli che richiedono un’elaborazione e una connettività efficienti.
- Sicurezza: STM8S208RB è spesso utilizzato in allarmi, telecamere di sicurezza e sistemi correlati.
- Salute: trova anche impiego nei sistemi di monitoraggio medico.
Progetto IAR: esempio di lampeggio LED GPIO su STM8S208RB
Seguendo i passaggi seguenti, dovresti essere in grado di implementare correttamente l’esempio di lampeggio LED GPIO su STM8S208RB utilizzando la libreria periferica standard ST e il compilatore IAR. Questo esempio può servire come punto di partenza per applicazioni più complesse che coinvolgono il controllo GPIO e l’inizializzazione delle periferiche.
Strumenti e risorse richiesti:
- Libreria periferica standard ST STM8S/A
- Compilatore IAR per STM8
- Scheda di sviluppo STM8S208RBT6
Configurazione pin LED
In questo esempio, i LED di bordo sono collegati ai pin PC6 e PC7 del microcontrollore 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
In questo codice:
- LED1 è controllato utilizzando PC7 e LED2 è controllato utilizzando PC6.
- Le funzioni
LED1_ON(),LED1_OFF()eLED1_TOGGLE()controllano lo stato di LED1, mentreLED2_ON(),LED2_OFF()eLED2_TOGGLE()controllano LED2.
Codice programma principale
Di seguito è riportato il programma principale per inizializzare i LED, attivarli e introdurre un ritardo tra ogni attivazione.
#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
Funzione di ritardo
Di seguito è riportato il file sorgente della funzione di ritardo (delay.c) che fornisce funzioni di ritardo sia in microsecondi che in millisecondi.
#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)
}
Spiegazione delle Funzioni di Ritardo:
- delay_us: Fornisce un ritardo in microsecondi. La durata del ritardo viene regolata moltiplicando il valore di input per 3 per corrispondere alla velocità di clock del sistema di 16 MHz.
- delay_ms: Fornisce un ritardo approssimativo in millisecondi utilizzando cicli nidificati. Questo metodo è adatto per semplici esigenze di temporizzazione, ma per una maggiore precisione, è necessario utilizzare timer hardware.
Impostazione e Passaggi di Compilazione del Progetto
Download e Configurazione di STSW-STM8069:
- Assicurati di aver scaricato la libreria periferica standard STM8S (STSW-STM8069) versione 2.3.1 dal sito web ufficiale di ST.
- Includi i file di intestazione appropriati dalla libreria, come
stm8s.h,stm8s_gpio.h, ecc., nel tuo progetto.
Configurazione del Compilatore IAR:
- Apri IAR Embedded Workbench e crea un nuovo progetto per STM8S208RB.
- Seleziona il dispositivo corretto (STM8S208RB) e assicurati che la toolchain sia configurata per STM8.
- Aggiungi i file sorgente necessari:
main.c,led.c,delay.c, ecc. - Includi la libreria periferica standard STM8S nel tuo progetto. Assicurati che i percorsi corretti ai file della libreria siano impostati.
Compila e Flasha:
- Compila il progetto in IAR. Risolvi eventuali errori di compilazione, se necessario.
- Flasha il firmware sulla tua scheda di sviluppo STM8S208RB utilizzando un programmatore/debugger appropriato (ad esempio, ST-Link).
Test e Debug:
- Dopo aver flashato il codice, osserva i LED su PC6 e PC7. I LED dovrebbero lampeggiare con un intervallo di 1 secondo.
- Usa un debugger o un output seriale (se disponibile) per ispezionare il comportamento dei pin GPIO e verificare la funzionalità delle funzioni di ritardo.
Suggerimenti e Note Aggiuntive
Utilizzo dei Timer per il Ritardo: Il ritardo basato su software è semplice ma inefficiente per applicazioni più complesse. Per ritardi più precisi ed efficienti, prendi in considerazione l’utilizzo di timer hardware invece di ritardi software.
Ottimizzazione dell’Alimentazione: Se la tua applicazione richiede un basso consumo energetico, potresti voler esplorare le modalità a basso consumo del chip STM8S208RB, soprattutto quando il sistema è inattivo (come durante il lampeggio del LED).
Debug: Puoi impostare punti di interruzione nel codice per eseguire il programma passo passo e monitorare i valori delle variabili. Questo è particolarmente utile per controllare la temporizzazione dei ritardi e lo stato dei pin GPIO.
Definizioni dei Pin GPIO: Assicurati che le definizioni
LED_GPIO_PORTeLED_GPIO_PINScorrispondano al layout effettivo della tua scheda di sviluppo. Ad esempio, conferma che PC6 e PC7 siano i pin corretti per i tuoi LED.




