Artikel ini memaparkan informasi dasar mengenai mikrokontroler STM8S208RB serta cara membuat proyek IAR untuk mikrokontroler tersebut.
Fitur dan Spesifikasi STM8S208RB
STM8S208RB dilengkapi dengan inti STM8 8-bit yang beroperasi pada frekuensi maksimum 16 MHz. Chip ini memiliki memori Flash sebesar 128 KB dan RAM sebesar 8 KB, sehingga cocok untuk berbagai aplikasi tertanam. Chip ini mendukung berbagai antarmuka komunikasi, termasuk SPI, UART, dan I2C, serta ADC 10-bit yang menyediakan 16 saluran untuk masukan analog.
| 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 |
Konfigurasi Pin STM8S208RB

Diagram Blok STM8S208RB

Aplikasi STM8S208RB
- Elektronik Konsumen: STM8S208RB digunakan dalam produk seperti peralatan rumah tangga dan mainan, yang membutuhkan daya rendah dan kontrol sederhana.
- Aplikasi Otomotif: Digunakan dalam sistem otomotif untuk tugas-tugas seperti pengendalian pencahayaan dan antarmuka sensor.
- Kontrol Industri: Mikrokontroler ini digunakan untuk mengontrol mesin dan proses otomatisasi.
- Rumah Pintar: Digunakan pada perangkat seperti termostat dan sistem pencahayaan pintar.
- Perangkat Portabel: Mengingat konsumsi dayanya yang rendah, perangkat ini ideal untuk perangkat yang bertenaga baterai.
- IoT: Dapat ditemukan pada perangkat IoT, terutama yang memerlukan pemrosesan dan konektivitas yang efisien.
- Keamanan: STM8S208RB sering digunakan dalam alarm, kamera keamanan, dan sistem terkait.
- Kesehatan: Mikrocontroller ini juga digunakan dalam sistem pemantauan medis.
Proyek IAR: Contoh LED Berkedip pada GPIO di STM8S208RB
Dengan mengikuti langkah-langkah di bawah ini, Anda seharusnya dapat berhasil menerapkan contoh kedipan LED GPIO pada STM8S208RB menggunakan ST Standard Peripheral Library dan kompiler IAR. Contoh ini dapat dijadikan titik awal untuk aplikasi yang lebih kompleks yang melibatkan pengendalian GPIO dan inisialisasi periferal.
Alat dan Sumber Daya yang Diperlukan:
- Perpustakaan Periferal Standar ST STM8S/A
- IAR Compiler untuk STM8
- Papan Pengembangan STM8S208RBT6
Konfigurasi Pin LED
Dalam contoh ini, LED onboard dihubungkan ke pin PC6 dan PC7 pada mikrokontroler 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
Dalam kode ini:
- LED1 dikendalikan menggunakan PC7, dan LED2 dikendalikan menggunakan PC6.
- Fungsi-fungsi
LED1_ON(),LED1_OFF(), danLED1_TOGGLE()mengontrol status LED1, sedangkanLED2_ON(),LED2_OFF(), danLED2_TOGGLE()mengontrol LED2.
Kode Program Utama
Berikut ini adalah program utama untuk menginisialisasi LED, mengubah statusnya, dan menyisipkan jeda di antara setiap perubahan status.
#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
Fungsi Penundaan
Di bawah ini adalah berkas sumber fungsi penundaan (delay.c) yang menyediakan fungsi penundaan dalam satuan mikrodetik dan milidetik.
#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)
}
Penjelasan tentang Fungsi Penundaan:
- delay_us: Memberikan penundaan dalam mikrodetik. Durasi penundaan disesuaikan dengan mengalikan nilai masukan dengan 3 agar sesuai dengan kecepatan jam sistem 16 MHz.
- delay_ms: Memberikan penundaan kasar dalam milidetik menggunakan loop bersarang. Metode ini cocok untuk kebutuhan waktu sederhana, tetapi untuk presisi yang lebih tinggi, sebaiknya menggunakan timer perangkat keras.
Langkah-langkah Penyiapan dan Kompilasi Proyek
Unduh dan Atur STSW-STM8069:
- Pastikan Anda telah mengunduh Perpustakaan Periferal Standar STM8S (STSW-STM8069) versi 2.3.1 dari situs web resmi ST.
- Sertakan berkas header yang sesuai dari perpustakaan, seperti
stm8s.h,stm8s_gpio.h, dll., ke dalam proyek Anda.
Pengaturan Kompiler IAR:
- Buka IAR Embedded Workbench dan buat proyek baru untuk STM8S208RB.
- Pilih perangkat yang benar (STM8S208RB) dan pastikan toolchain telah dikonfigurasi untuk STM8.
- Tambahkan berkas sumber yang diperlukan:
main.c,led.c,delay.c, dll. - Sertakan Perpustakaan Periferal Standar STM8S dalam proyek Anda. Pastikan jalur yang benar ke berkas perpustakaan telah ditetapkan.
Kompilasi dan Flash:
- Kompilasi proyek di IAR. Selesaikan kesalahan kompilasi jika diperlukan.
- Tulis firmware ke papan pengembangan STM8S208RB Anda menggunakan programmer/debugger yang sesuai (misalnya, ST-Link).
Pengujian dan Debugging:
- Setelah mem-flash kode, perhatikan LED pada PC6 dan PC7. LED seharusnya berkedip dengan interval 1 detik.
- Gunakan debugger atau output serial (jika tersedia) untuk memeriksa perilaku pin GPIO dan memverifikasi fungsi penundaan.
Saran dan Catatan Tambahan
Menggunakan Timer untuk Penundaan: Penundaan berbasis perangkat lunak memang sederhana, tetapi tidak efisien untuk aplikasi yang lebih kompleks. Untuk penundaan yang lebih akurat dan efisien, pertimbangkan untuk menggunakan timer perangkat keras sebagai pengganti penundaan perangkat lunak.
Optimasi Daya: Jika aplikasi Anda memerlukan konsumsi daya rendah, Anda mungkin ingin menjelajahi mode daya rendah pada chip STM8S208RB, terutama saat sistem dalam keadaan idle (seperti saat LED berkedip).
Debugging: Anda dapat menetapkan titik henti (breakpoint) dalam kode untuk menelusuri program dan memantau nilai variabel. Hal ini sangat berguna untuk memeriksa waktu penundaan dan status pin GPIO.
Definisi Pin GPIO: Pastikan bahwa
LED_GPIO_PORTdanLED_GPIO_PINSsesuai dengan susunan pin sebenarnya pada papan pengembangan Anda. Misalnya, pastikan bahwa PC6 dan PC7 adalah pin yang tepat untuk LED Anda.




