Der Mikrocontroller STM8S105K4, der für seine Effizienz und Vielseitigkeit bekannt ist, ist eine gute Wahl für eingebettete Anwendungen in Unterhaltungselektronik und industriellen Systemen. Dieser Artikel bietet einen Überblick über seine wichtigsten Funktionen, die Pin-Konfiguration und das Blockdiagramm sowie eine Schritt-für-Schritt-Anleitung zum Einrichten eines Projekts in IAR Embedded Workbench. Mit Beispielcode für die grundlegende GPIO-Steuerung und Anweisungen zur Programmierung und Fehlerbehebung hilft Ihnen dieser Leitfaden, schnell und effektiv mit dem STM8S105K4 zu beginnen.
Überblick
Der STM8S105K4 ist ein 8-Bit-Mikrocontroller von STMicroelectronics, der zur STM8-Familie gehört. Er wurde für eine Vielzahl von Anwendungen entwickelt und bietet ein ausgewogenes Verhältnis zwischen Leistung, Energieeffizienz und Erschwinglichkeit. Mit seinen fortschrittlichen Peripheriegeräten und dem integrierten EEPROM eignet sich der STM8S105K4 für allgemeine Steuerungsaufgaben in der Unterhaltungselektronik, in industriellen Systemen und vielem mehr.
Funktionen und Spezifikationen
- Kern: 8-Bit-STM8-Kern mit Harvard-Architektur, Betriebsfrequenz bis zu 16 MHz.
- Speicher:
- Flash-Speicher: 16 KB
- RAM: 1 KB
- EEPROM: 640 Byte
- Timer:
- 16-Bit-Timer für erweiterte Steuerung (TIM1)
- 16-Bit-Allzweck-Timer (TIM2)
- 8-Bit-Basistimer (TIM4)
- Kommunikationsschnittstellen:
- UART-, I²C- und SPI-Schnittstellen für vielseitige Konnektivität.
- Analoge Funktionen:
- 10-Bit-ADC mit bis zu 5 Kanälen
- Interne Spannungsreferenz für verbesserte analoge Präzision
- GPIO:
- Mehrere I/O-Pins mit programmierbaren Pull-up-, Ausgangstyp- und Geschwindigkeitseinstellungen
- Bis zu 38 I/O-Ports (je nach Gehäuse)
- Betriebsspannung: 2,95 V bis 5,5 V
- Temperaturbereich: -40 °C bis +85 °C (Industriequalität)
- Gehäuse: Erhältlich in LQFP32 und anderen kompakten Gehäuseoptionen.
Pin-Konfiguration
Der STM8S105K4 bietet je nach Gehäuse bis zu 48 E/A-Pins, die für verschiedene Funktionen wie ADC-Eingang, PWM-Ausgang, UART, SPI, I²C und allgemeine digitale E/A konfiguriert werden können. Zu den wichtigsten GPIOs gehören:
- Port A (PA0 bis PA7): Konfigurierbar für digitale I/O und alternative Funktionen.
- Port B (PB0 bis PB7): Wird in erster Linie für E/A verwendet, wobei bestimmte Pins alternative Funktionen unterstützen.
- Port C, D und E: Unterstützung für zusätzliche I/O-, Analogeingangs- und Timer-Funktionen, einschließlich PWM-Erzeugung.

Jeder Pin kann individuell für den Ein- oder Ausgang konfiguriert werden und unterstützt sowohl Push-Pull- als auch Open-Drain-Modi. Darüber hinaus sind die Pins ESD-geschützt und für Hochleistungsausgänge für LED- und Relais-Anwendungen geeignet.
Blockdiagramm

Das Blockdiagramm des STM8S105K4 umfasst:
- Kern: STM8-Kern mit Taktsteuerung, Programmzähler und ALU für 8-Bit-Verarbeitung.
- Speichereinheiten:
- Flash-Speicher für die Codelagerung
- EEPROM für die Datenspeicherung
- SRAM für allgemeine Zwecke
- Peripheriegeräte:
- ADC für analoge Signalverarbeitung
- Timer (TIM1, TIM2 und TIM4) für Ereigniszeitsteuerung, PWM und Wellenformgenerierung
- Kommunikationsschnittstellen (UART, SPI und I²C) für die Verbindung mit Sensoren, Displays und anderen Modulen
- Systemsteuerung:
- Taktgeneratoreinheit mit internen und externen Taktquellen
- Watchdog-Timer für die Systemzuverlässigkeit
- Energieverwaltungseinheit mit Energiesparmodi
- E/A-Steuerung: GPIO-Konfiguration und -Verwaltung für die Anbindung externer Geräte
Diese modulare Architektur ermöglicht Flexibilität bei der Bewältigung einer Vielzahl von Aufgaben, von der Echtzeitsteuerung bis zur seriellen Kommunikation.
Anwendungen
Der Mikrocontroller STM8S105K4 eignet sich ideal für eine Vielzahl von Anwendungen, darunter:
- Unterhaltungselektronik: Haushaltsgeräte, Fernbedienungen und Displaysteuerung
- Industrielle Steuerung: Motorsteuerung, HLK-Systeme und SPS-Module
- Automobilanwendungen: Sensorschnittstellen, Armaturenbrettsteuerung und Beleuchtungssysteme
- Gesundheitswesen: Medizinische Geräte, Überwachungssysteme und tragbare Gesundheitsgeräte
- IoT-Geräte: Intelligente Sensoren, Funkmodule und Energiezähler
Mit seiner Kombination aus analogen, digitalen und Kommunikationsfunktionen ermöglicht der STM8S105K4 Entwicklern die Erstellung effizienter, vielseitiger und kostengünstiger eingebetteter Systeme für verschiedene Branchen.
Erstellen eines IAR-Projekts für STM8S105K4
In diesem Beispiel erstellen wir ein IAR-Projekt, um die LED mithilfe des Mikrocontrollers STM8S105K4 zum Leuchten zu bringen.
Erforderliche Werkzeuge
Hardwarekomponenten:
- STM8S105K4-Mikrocontroller
- ST-LINK/V2 Debugger und Programmierer
- STM8S105K4-Entwicklungsboard (optional)
- LED und Widerstand (1 kΩ)
- Breadboard und Jumper-Kabel
Software-Tools:
- IAR Embedded Workbench für STM8
- ST Visual Programmer (STVP)
Schritte zum Erstellen des Projekts
Projektordner erstellen:
- Erstellen Sie einen Ordner mit dem Namen
testund darin einen weiteren Ordner mit dem Namenuser.
- Erstellen Sie einen Ordner mit dem Namen
Öffnen Sie IAR Embedded Workbench:
- Öffnen Sie IAR für STM8 (Version 9.40.2).
Neues Projekt erstellen:
- Gehen Sie zu
Project->Create New Project. - Wählen Sie im Dialogfeld
STM8 Series->Empty projectund klicken Sie aufOK. - Speichern Sie die
.ewpDatei imtest/userOrdner und benennen Sie sietest.
- Gehen Sie zu

Projektgruppe hinzufügen:
- Wählen Sie das Menü aus und klicken Sie auf
Project->Add Group. - Geben Sie der Gruppe einen Namen
userund klicken Sie aufOK.
- Wählen Sie das Menü aus und klicken Sie auf

Erstellen Sie eine Hauptdatei:
- Gehen Sie zu
File->New->Fileund speichern Sie sie alsmain.c. - Hinzufügen
main.czuruserGruppe.
- Gehen Sie zu

Konfigurieren der IAR-Umgebung
Projektoptionen:
- Ziel und Klick
Project->Options.
- Ziel und Klick
Zielgerät festlegen:
- In
General Options->Target->Devicewählen SieSTM8S105K4(oder Ihr spezifisches Gerätemodell).
- In

Include-Pfade konfigurieren:
- Fügen Sie in
C/C++ Compiler->Preprocessorfügen Sie den Pfad"$PROJ_DIR$\..\user". - Diese Syntax gibt den Include-Dateipfad innerhalb des Projektverzeichnisses an.
- Fügen Sie in

Debugger einrichten:
- In
Debugger->Setup, stellen Sie denDriveraufST-LINK. - Klicken Sie
OK, um die Konfiguration zu speichern.
- In

Code hinzufügen und Projekt erstellen:
- Geben Sie in
main.cden folgenden Code ein und gehen Sie dann zuProject->Rebuild All. - Wenn Sie
Total number of errors: 0undTotal number of warnings: 0, ist das Projekt korrekt eingerichtet.
- Geben Sie in

Header-Datei einbinden:
- Stellen Sie sicher, dass die Header-Datei
IOSTM8S105K4.him IAR-Installationsverzeichnis verfügbar ist:Software (E:) > IAR for STM8 > arm > inc > ST.
- Stellen Sie sicher, dass die Header-Datei

Code schreiben, herunterladen und debuggen
Der folgende Code schaltet eine an Pin PE5 angeschlossene LED mit einer Verzögerungsschleife um, sodass die LED blinkt.
#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
}
}
}
}
Hardware-Verbindungen
- PE5 → LED → 1K-Widerstand → Masse
Nachdem Sie den Code hochgeladen und das Programm gestartet haben, sollte die LED an PE5 blinken und damit bestätigen, dass die Projektkonfiguration abgeschlossen ist.
Passiven Piepser mit STM8S105K4 ansteuern
In diesem Beispiel wird der Pin PD4 des Mikrocontrollers STM8S105K4 zum Ansteuern eines passiven Summers verwendet. Die Summerfunktion ist eine alternative Funktion von PD4. Durch Konfigurieren des Bits AFR7 können wir die alternative Funktion für PD4 aktivieren, wodurch dieser den Summer ansteuern kann.
Codeausführung
/* 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
}
Programmierung und Konfiguration der PD4-Signaltonfunktion
- Flashen Sie das Programm mit ST-Link und STVP-Software:
- Verwenden Sie den ST-Link-Programmierer und die offizielle STVP-Software, um die Hex-Datei auf den Mikrocontroller zu flashen.
- Schritte zum Flashen und Konfigurieren in STVP:
- Schritt 1: Öffnen Sie die STVP-Software, wählen Sie die Option „PROGRAM MEMORY“ (Programmspeicher) und gehen Sie zu
File -> Openund suchen Sie die gespeicherte Hex-Datei. - Schritt 2: Wählen Sie die Option „OPTION BYTE” und ändern Sie das AFR7-Bit, um die alternative Funktion für PD4 zu aktivieren.
- Schritt 3: Gehen Sie im Software-Menü zu
Program -> All Tabs, um sowohl die Programm- als auch die Optionsbytes zu flashen.
- Schritt 1: Öffnen Sie die STVP-Software, wählen Sie die Option „PROGRAM MEMORY“ (Programmspeicher) und gehen Sie zu





