Gömülü Sistemler: Arduino ve STM32 İçin C/C++ Programlama

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

Gömülü Sistemler: Donanım ve Yazılımın Buluşması​


Gömülü programlamada kaynaklar (RAM ve İşlemci hızı) sınırlıdır. Bu yüzden kodun verimliliği ve bellek yönetimi hayati önem taşır. C++'ın nesne yönelimli özellikleri kod düzenini sağlarken, C'nin yalınlığı performansı zirveye taşır.



1. Arduino: Hızlı Prototipleme ve Kolay Giriş​


Arduino, aslında ATMEL tabanlı bir mikrodenetleyici üzerine inşa edilmiş bir ekosistemdir. C++ tabanlı bir dil kullanır ancak karmaşık kısımları kütüphanelerle gizleyerek size iki temel fonksiyon sunar:

setup(): Cihaz açıldığında bir kez çalışır. Pin modları ve haberleşme ayarları burada yapılır.

loop(): Program açık olduğu sürece sonsuz bir döngüde çalışır. Oyun döngüsüne benzer.

C++:
void setup() {
pinMode(13, OUTPUT); // 13. pini cikis olarak ayarla
}

void loop() {
digitalWrite(13, HIGH); // LED'i yak
delay(1000);            // 1 saniye bekle
digitalWrite(13, LOW);  // LED'i sondur
delay(1000);
}



2. STM32: Endüstriyel Güç ve ARM Mimarisi​


STM32, 32-bit ARM Cortex-M çekirdeğine sahip, çok daha yüksek performanslı ve karmaşık bir mikrodenetleyici ailesidir. Arduino'nun aksine, burada donanımın her detayına (Register seviyesi) hakim olmanız gerekir.

HAL (Hardware Abstraction Layer): Donanım detaylarını basitleştiren, ST'nin sunduğu bir kütüphane katmanıdır.

Interrupts (Kesmeler): Bir olay olduğunda (buton basılması gibi) ana döngüyü durdurup hatayı işleyen sistemlerdir.



3. Arduino vs. STM32 Karşılaştırması​


ÖzellikArduino (AVR)STM32 (ARM)
İşlemci Mimarisi8-bit32-bit
Hız16 MHz72 MHz - 400+ MHz
Gerilim5V3.3V
Zorluk SeviyesiBaşlangıç (Hobi)İleri (Endüstriyel)



4. Gömülü C/C++'ta Kritik Kavramlar​


Gömülü sistem kodlarken normal masaüstü programlamadan farklı bazı kurallara dikkat etmelisiniz:

volatile Değişkenler: Derleyiciye, "Bu değişken her an dışarıdan (donanımdan) değişebilir, optimize etme!" demenizi sağlar.

Bit Manipülasyonu: &, |, ^ ve << gibi operatörlerle bir register içindeki tek bir biti değiştirmek çok yaygındır.

Pointer Kullanımı: Donanım adreslerine (Memory-mapped I/O) doğrudan erişmek için pointerlar vazgeçilmezdir.



Sonuç​


Eğer yeni başlıyorsanız ve hızlıca bir proje (akıllı saksı, engelleyen robot vb.) çıkarmak istiyorsanız Arduino en mantıklı yoldur. Ancak profesyonel bir gömülü sistem mühendisi olmak, RTOS (Real-Time Operating Systems) öğrenmek ve karmaşık kontrol sistemleri kurmak istiyorsanız STM32 ve ARM dünyasına girmelisiniz.
 
Geri
Üst