CodeBlanks Logo Icon CodeBlanks

Özet - Gömülü C

MMIO, kesme ve bit manipülasyonunu birleştirerek bir LED yakma uygulaması yazarsın.

Özet - LED yakma uygulaması

Bu derste MMIO, kesme ve bit manipülasyonunu birleştirerek bir LED yakma uygulaması yazacaksın. Program, sahte bir GPIO yazmacını bir döngü içinde değiştirir (toggle); her adımda LED durumunu yazdırır.

Yazmaç volatile olur (MMIO). Döngü içinde ^= ile bit değiştirme yapılır (bit manipülasyonu). Her yinelemede durum yazdırılır; bu, kesme işleyisinin izlenmesine benzer. Üç yineleme: LED önce yanar, sonra söner, sonra tekrar yanar. Bu alıştırma, gömülü C'nin temel desenlerini tek programda birleştirir.

Uygulama LED blink programı yaz

static volatile unsigned int gpio = 0; tanımla (sahte GPIO yazmacı). int main(void) içinde for (int i = 0; i < 3; i++) döngüsü yaz. Döngü içinde gpio ^= (1 << 0); ile LED'i değiştir ve printf("LED: %d\n", gpio & 1) ile durumu yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// sahte GPIO yazmacı tanımla (volatile)
// üç adımlı döngü yaz
// her adımda toggle yap ve yazdır

Örnek çözüm

main.c
#include <stdio.h>

static volatile unsigned int gpio = 0;

int main(void) {
    for (int i = 0; i < 3; i++) {
        gpio ^= (1 << 0);
        printf("LED: %d\n", gpio & 1);
    }
    return 0;
}

Beklenen çıktı

LED: 1
LED: 0
LED: 1

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 LED toggle için hangi işlem kullanılır?

  • |=
  • ^= Doğru cevap
  • &=
  • =

Açıklama: ^= biti değiştirir; LED toggle için uygundur.

2 Toggle işlemini tamamla

Soru
gpio ^= (1 << ____);  /* LED'i değiştir */
Cevap
gpio ^= (1 << 0);  /* LED'i değiştir */

Açıklama: (1 << 0) 0'ıncı biti değiştirir; LED toggle olur.

3 Gömülü kavramı görevine eşle

Kavram Anlamı
MMIO Donanım erişimi
volatile Optimize engelleme
Toggle ^= ile değiştir
Döngü Sürekli çalıştır

Uzman bölümündeki tüm dersler