Bu makale, STM8S208RB mikrodenetleyicinin temel bilgilerini ve bunun için bir IAR projesinin nasıl oluşturulacağını anlatmaktadır.
STM8S208RB Özellikleri ve Teknik Özellikleri
STM8S208RB, maksimum 16 MHz frekansta çalışan 8 bitlik bir STM8 çekirdeğine sahiptir. 128 KB Flash bellek ve 8 KB RAM içeren bu yonga, çeşitli gömülü uygulamalar için uygundur. Yonga, SPI, UART ve I2C gibi çok sayıda iletişim arabirimini desteklemenin yanı sıra, analog girişler için 16 kanal sunan 10 bitlik bir ADC'ye sahiptir.
| 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 |
STM8S208RB Pin Dizilişi

STM8S208RB Blok Şeması

STM8S208RB Uygulaması
- Tüketici Elektroniği: STM8S208RB, düşük güç tüketimi ve basit kontrolün gerekli olduğu ev aletleri ve oyuncaklar gibi ürünlerde kullanılır.
- Otomotiv Uygulamaları: Otomotiv sistemlerinde aydınlatma kontrolü ve sensör arayüzü gibi görevlerde kullanılır.
- Endüstriyel Kontrol: Mikrodenetleyici, makineleri ve otomasyon süreçlerini kontrol etmek için kullanılır.
- Akıllı Ev: Termostatlar ve akıllı aydınlatma sistemleri gibi cihazlarda kullanılır.
- Taşınabilir Cihazlar: Düşük güç tüketimi sayesinde, pille çalışan cihazlar için idealdir.
- IoT: IoT cihazlarında, özellikle verimli işleme ve bağlantı gerektirenlerde bulunur.
- Güvenlik: STM8S208RB genellikle alarmlarda, güvenlik kameralarında ve ilgili sistemlerde kullanılır.
- Sağlık: Tıbbi izleme sistemlerinde de kullanılır.
IAR Projesi: STM8S208RB Üzerinde GPIO LED Yanıp Sönme Örneği
Aşağıdaki adımları izleyerek, ST Standart Çevre Birimi Kütüphanesi ve IAR derleyicisini kullanarak STM8S208RB üzerinde GPIO LED yanıp sönme örneğini başarıyla uygulayabilirsiniz. Bu örnek, GPIO kontrolü ve çevre birimi başlatma işlemlerini içeren daha karmaşık uygulamalar için bir başlangıç noktası görevi görebilir.
Gerekli Araçlar ve Kaynaklar:
- ST STM8S/A Standart Çevre Birimi Kütüphanesi
- STM8 için IAR Derleyici
- STM8S208RBT6 Geliştirme Kartı
LED Pin Yapılandırması
Bu örnekte, devre üzerindeki LED'ler STM8S208RB mikrodenetleyicisinin PC6 ve PC7 pinlerine bağlanmıştır.
#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
Bu kodda:
- LED1, PC7 kullanılarak kontrol edilir ve LED2, PC6 kullanılarak kontrol edilir.
- İşlevler
LED1_ON(),LED1_OFF()veLED1_TOGGLE()LED1'in durumunu kontrol ederken,LED2_ON(),LED2_OFF()veLED2_TOGGLE()ise LED2'yi kontrol eder.
Ana Program Kodu
Aşağıda, LED'leri başlatmak, durumlarını değiştirmek ve her durum değişikliği arasında bir gecikme eklemek için kullanılan ana program yer almaktadır.
#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
Gecikme İşlevi
Aşağıda, hem mikrosaniye hem de milisaniye gecikme işlevleri sunan gecikme işlevinin kaynak dosyası (delay.c) yer almaktadır.
#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)
}
Gecikme İşlevlerinin Açıklaması:
- delay_us: Mikrosaniye cinsinden bir gecikme sağlar. Gecikme süresi, 16 MHz sistem saat hızına uyacak şekilde giriş değerinin 3 ile çarpılmasıyla ayarlanır.
- delay_ms: İç içe geçmiş döngüler kullanarak milisaniye cinsinden yaklaşık bir gecikme sağlar. Bu yöntem basit zamanlama ihtiyaçları için uygundur, ancak daha fazla hassasiyet için donanım zamanlayıcıları kullanılmalıdır.
Proje Kurulumu ve Derleme Adımları
STSW-STM8069'u İndirin ve Kurun:
- ST’nin resmi web sitesinden STM8S Standart Çevre Birimi Kütüphanesi (STSW-STM8069) sürüm 2.3.1’i indirdiğinizden emin olun.
- Kütüphaneden uygun başlık dosyalarını, örneğin
stm8s.h,stm8s_gpio.h, vb.
IAR Derleyici Kurulumu:
- IAR Embedded Workbench'i açın ve STM8S208RB için yeni bir proje oluşturun.
- Doğru cihazı (STM8S208RB) seçin ve araç zincirinin STM8 için yapılandırıldığından emin olun.
- Gerekli kaynak dosyalarını ekleyin:
main.c,led.c,delay.c, vb. - Projenize STM8S Standart Çevre Birimi Kütüphanesini ekleyin. Kütüphane dosyalarına giden doğru yolların ayarlandığından emin olun.
Derleme ve Flash:
- Projeyi IAR'da derleyin. Gerekirse derleme sırasında ortaya çıkan hataları giderin.
- Uygun bir programlayıcı/hata ayıklayıcı (ör. ST-Link) kullanarak STM8S208RB geliştirme kartınıza ürün yazılımını yükleyin.
Test ve Hata Ayıklama:
- Kodu yazdıktan sonra, PC6 ve PC7 üzerindeki LED'leri gözlemleyin. LED'ler 1 saniyelik aralıklarla yanıp sönmelidir.
- Bir hata ayıklayıcı veya seri çıkış (varsa) kullanarak GPIO pinlerinin davranışını inceleyin ve gecikme işlevlerinin çalışıp çalışmadığını doğrulayın.
Ek Öneriler ve Notlar
Gecikme için Zamanlayıcıların Kullanımı: Yazılım tabanlı gecikme yöntemi basittir ancak daha karmaşık uygulamalar için verimsizdir. Daha hassas ve verimli gecikmeler elde etmek için, yazılım gecikmeleri yerine donanım zamanlayıcılarını kullanmayı düşünün.
Güç Optimizasyonu: Uygulamanız düşük güç tüketimi gerektiriyorsa, özellikle sistem boşta olduğunda (örneğin LED yanıp sönerken), STM8S208RB yongasının düşük güç modlarını keşfetmek isteyebilirsiniz.
Hata Ayıklama: Programı adım adım ilerletmek ve değişkenlerin değerlerini izlemek için kodda kesme noktaları ayarlayabilirsiniz. Bu, gecikmelerin zamanlamasını ve GPIO pinlerinin durumunu kontrol etmek için özellikle yararlıdır.
GPIO Pin Tanımları:
LED_GPIO_PORTveLED_GPIO_PINStanımlarının geliştirme kartınızın gerçek pin dizilimiyle eşleştiğinden emin olun. Örneğin, PC6 ve PC7'nin LED'leriniz için doğru pinler olduğunu doğrulayın.




