Özet - Gömülü C
- C kursu
- Uzman
- Ders 42/47
- 5 dk
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
#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
#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
gpio ^= (1 << ____); /* LED'i değiştir */
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 |