Il microcontrollore STM8S105K4, noto per la sua efficienza e versatilità, è una scelta solida per applicazioni embedded in elettronica di consumo e sistemi industriali. Questo articolo fornisce una panoramica delle sue caratteristiche principali, della configurazione dei pin e del diagramma a blocchi, insieme a una guida passo passo per impostare un progetto in IAR Embedded Workbench. Con codice di esempio per il controllo GPIO di base e istruzioni sulla programmazione e il debug, questa guida ti aiuterà a iniziare con STM8S105K4 in modo rapido ed efficace.
Panoramica
L’STM8S105K4 è un microcontrollore a 8 bit di STMicroelectronics, parte della famiglia STM8. È progettato per un’ampia gamma di applicazioni, fornendo un equilibrio tra prestazioni, efficienza energetica e convenienza. Con le sue periferiche avanzate e la EEPROM integrata, l’STM8S105K4 è adatto per attività di controllo generiche in elettronica di consumo, sistemi industriali e altro ancora.
Caratteristiche e specifiche
- Core: core STM8 a 8 bit con architettura Harvard, che opera fino a 16 MHz.
- Memoria:
- Memoria Flash: 16 KB
- RAM: 1 KB
- EEPROM: 640 byte
- Timer:
- Timer di controllo avanzato a 16 bit (TIM1)
- Timer generico a 16 bit (TIM2)
- Timer di base a 8 bit (TIM4)
- Interfacce di comunicazione:
- Interfacce UART, I²C e SPI per una connettività versatile.
- Funzionalità analogiche:
- ADC a 10 bit con fino a 5 canali
- Riferimento di tensione interno per una maggiore precisione analogica
- GPIO:
- Pin I/O multipli con impostazioni programmabili pull-up, tipo di output e velocità
- Fino a 38 porte I/O (a seconda del package)
- Tensione di funzionamento: da 2,95 V a 5,5 V
- Intervallo di temperatura: da -40°C a +85°C (grado industriale)
- Packaging: disponibile in opzioni di package compatti come LQFP32 e altri.
Configurazione dei pin
L’STM8S105K4 fornisce fino a 48 pin I/O a seconda del package, che possono essere configurati per più funzioni come ingresso ADC, uscita PWM, UART, SPI, I²C e I/O digitale generico. I GPIO chiave includono:
- Porta A (PA0 a PA7): configurabile per I/O digitale e funzioni alternative.
- Porta B (PB0 a PB7): utilizzata principalmente per I/O con pin specifici che supportano funzioni alternative.
- Porta C, D ed E: supporto per I/O aggiuntivi, ingresso analogico e funzioni timer, inclusa la generazione PWM.

Ogni pin può essere configurato individualmente per ingresso o uscita, con supporto per modalità push-pull e open-drain. Inoltre, i pin sono protetti da ESD e sono in grado di fornire uscite ad alta corrente per applicazioni di pilotaggio di LED e relè.
Diagramma a blocchi

Il diagramma a blocchi dell’STM8S105K4 include:
- Core: core STM8 con controllo del clock, contatore di programma e ALU per l’elaborazione a 8 bit.
- Unità di memoria:
- Memoria Flash per l’archiviazione del codice
- EEPROM per la conservazione dei dati
- SRAM per uso generico
- Periferiche:
- ADC per l’elaborazione del segnale analogico
- Timer (TIM1, TIM2 e TIM4) per la temporizzazione degli eventi, PWM e la generazione di forme d’onda
- Interfacce di comunicazione (UART, SPI e I²C) per la connettività con sensori, display e altri moduli
- Controllo di sistema:
- Unità di generazione del clock con sorgenti di clock interne ed esterne
- Watchdog timer per l’affidabilità del sistema
- Unità di gestione dell’alimentazione con modalità a basso consumo
- Controllo I/O: configurazione e gestione GPIO per l’interfacciamento con dispositivi esterni
Questa architettura modulare consente flessibilità nella gestione di una varietà di attività, dal controllo in tempo reale alla comunicazione seriale.
Applicazioni
Il microcontrollore STM8S105K4 è ideale per un’ampia gamma di applicazioni, tra cui:
- Elettronica di consumo: elettrodomestici, telecomandi e controllo del display
- Controllo industriale: controllo del motore, sistemi HVAC e moduli PLC
- Applicazioni automobilistiche: interfaccia del sensore, controllo del cruscotto e sistemi di illuminazione
- Assistenza sanitaria: dispositivi medici, sistemi di monitoraggio e apparecchiature sanitarie portatili
- Dispositivi IoT: sensori intelligenti, moduli wireless e misurazione dell’energia
Con il suo mix di funzionalità analogiche, digitali e di comunicazione, l’STM8S105K4 consente ai progettisti di creare sistemi embedded efficienti, versatili ed economici in vari settori.
Creazione di un progetto IAR per STM8S105K4
In questo esempio, creeremo un progetto IAR per accendere il led utilizzando il microcontrollore STM8S105K4.
Strumenti richiesti
Componenti hardware:
- Microcontrollore STM8S105K4
- Debugger e programmatore ST-LINK/V2
- Scheda di sviluppo STM8S105K4 (opzionale)
- LED e resistore (1KΩ)
- Breadboard e cavi jumper
Strumenti software:
- IAR Embedded Workbench per STM8
- ST Visual Programmer (STVP)
Passaggi per creare il progetto
Crea cartella progetto:
- Crea una cartella denominata
teste al suo interno, crea un’altra cartella denominatauser.
- Crea una cartella denominata
Apri IAR Embedded Workbench:
- Apri IAR per STM8 (versione 9.40.2).
Crea un Nuovo Progetto:
- Vai a
Project->Create New Project. - Nella finestra di dialogo, seleziona
STM8 Series->Empty project, e cliccaOK. - Salva il file
.ewpnella cartellatest/usere chiamalotest.
- Vai a

Aggiungi Gruppo Progetto:
- Seleziona il menu e clicca
Project->Add Group. - Nomina il gruppo
user, e cliccaOK.
- Seleziona il menu e clicca

Crea un File Principale:
- Vai a
File->New->File, poi salvalo comemain.c. - Aggiungi
main.cal gruppouser.
- Vai a

Configurazione dell'Ambiente IAR
Opzioni Progetto:
- Seleziona e clicca
Project->Options.
- Seleziona e clicca
Imposta Dispositivo Target:
- In
General Options->Target->Device, selezionaSTM8S105K4(o il tuo modello di dispositivo specifico).
- In

Configura Percorsi di Inclusione:
- In
C/C++ Compiler->Preprocessor, aggiungi il percorso"$PROJ_DIR$\\..\\user". - Questa sintassi specifica il percorso del file di inclusione all’interno della directory del progetto.
- In

Configura Debugger:
- In
Debugger->Setup, impostaDriversuST-LINK. - Clicca
OKper salvare la configurazione.
- In

Aggiungi Codice e Compila il Progetto:
- In
main.c, inserisci il seguente codice, poi vai aProject->Rebuild All. - Se vedi
Total number of errors: 0eTotal number of warnings: 0, il progetto è configurato correttamente.
- In

Includi File Header:
- Assicurati che il file header
IOSTM8S105K4.hsia disponibile nella directory di installazione di IAR:Software (E:) > IAR for STM8 > arm > inc > ST.
- Assicurati che il file header

Scrittura, Download e Debug del Codice
Il seguente codice commuta un LED collegato al pin PE5 con un ciclo di ritardo per far lampeggiare il LED.
#include "iostm8s105k4.h" // Ensure this header file exists in your project
int main(void) {
int i, j; // Variables for delay loop
// Configure PE5 as an output pin
PE_DDR |= 0x20; // Set bit 5 of PE_DDR (PE5) to 1 to configure as output
PE_CR1 |= 0x20; // Set bit 5 of PE_CR1 to 1 for push-pull mode
PE_CR2 &= ~0x20; // Set bit 5 of PE_CR2 to 0 for low speed
// Main loop
while (1) {
PE_ODR ^= 0x20; // Toggle PE5 (connected to LED)
// Simple delay loop
for (i = 0; i < 100; i++) {
for (j = 0; j < 1000; j++) {
// Empty loop for delay
}
}
}
}
Connessioni Hardware
- PE5 → LED → Resistore da 1K → Terra
Dopo aver caricato il codice e avviato il programma, dovresti vedere il LED su PE5 lampeggiare, confermando che la configurazione del progetto è completa.
Pilotare un Beeper Passivo con STM8S105K4
In questo esempio, il pin PD4 del microcontrollore STM8S105K4 viene utilizzato per pilotare un beeper passivo. La funzione beeper è una funzione alternativa di PD4. Configurando il bit AFR7, possiamo abilitare la funzione alternativa per PD4, che gli consente di pilotare il beeper.
Esecuzione del Codice
/* Includes */
#include "user.h"
/* Function Prototypes */
void HalBeep_Init(BEEP_Frequency_TypeDef beep_fre);
/* Main Function */
void main(void)
{
/* Clock, LED, and Timer Initialization */
HalCLK_Config();
HalLed_Init();
HalTimer1_Init();
// HalUART2_Init(); // Uncomment if UART is required
/* Buzzer Initialization */
HalBeep_Init(BEEP_FREQUENCY_2KHZ); // Initialize the buzzer at 2kHz
BEEP_Cmd(ENABLE); // Enable the buzzer
enableInterrupts(); // Enable interrupts
while (1)
{
// Main loop - insert additional code here if needed
}
}
/* Buzzer Initialization Function */
void HalBeep_Init(BEEP_Frequency_TypeDef beep_fre)
{
BEEP_DeInit(); // Reset the BEEP registers to their default values
BEEP_Init(beep_fre); // Initialize the BEEP with the specified frequency
}
Programmazione e Configurazione della Funzione Beeper PD4
- Flashare il Programma usando ST-Link e Software STVP:
- Utilizzare il programmatore ST-Link e il software ufficiale STVP per flashare il file hex sul microcontrollore.
- Passaggi per il Flashing e la Configurazione in STVP:
- Passo 1: Aprire il software STVP, selezionare l’opzione “PROGRAM MEMORY”, andare a
File -> Opene individuare il file hex salvato. - Passo 2: Selezionare l’opzione “OPTION BYTE” e modificare il bit AFR7 per abilitare la funzione alternativa per PD4.
- Passo 3: Nel menu del software, andare a
Program -> All Tabsper flashare sia il programma che i byte di opzione.
- Passo 1: Aprire il software STVP, selezionare l’opzione “PROGRAM MEMORY”, andare a





