# Etkileşimli STM32 Interrupt, DMA ve CPU Yükü

<div class="mlv-demo-links">
  <a class="mlv-demo-link" href="index.html">STM32 Rotası</a>
  <a class="mlv-demo-link" href="interactive_gpio_lab.html">GPIO Laboratuvarı</a>
  <a class="mlv-demo-link" href="interactive_clock_timer_lab.html">Clock ve Timer</a>
  <a class="mlv-demo-link" href="interactive_uart_lab.html">UART ve Terminal</a>
  <a class="mlv-demo-link" href="interactive_pwm_lab.html">PWM Laboratuvarı</a>
  <a class="mlv-demo-link" href="interactive_adc_lab.html">ADC ve Sensörler</a>
  <a class="mlv-demo-link" href="interactive_i2c_lab.html">I2C ve Sensörler</a>
  <a class="mlv-demo-link active" href="interactive_interrupt_dma_lab.html">Interrupt ve DMA</a>
  <a class="mlv-demo-link secondary" href="../_static/demos/stm32-interrupt-dma-lab.html">Tam Ekran Demo</a>
</div>

<div class="mlv-demo-hero">
  <div class="mlv-demo-kicker">STM32 / Ders 7</div>
  <p class="mlv-demo-lead">Bu laboratuvar, aynı veri akışının `polling`, `interrupt` ve `DMA` ile neden bambaşka sistem davranışı ürettiğini görünür kılar. Burada odak yalnızca `hangi API çağrılır` değil; CPU'nun ne kadar meşgul olduğu, kaç kez uyandığı ve verinin ne zaman kaçırıldığıdır.</p>
</div>

<div class="mlv-demo-grid">
  <div class="mlv-demo-panel">
    <strong>Ne Yap</strong>
    <span>Veri akış hızını, ana döngü yükünü, callback işini ve DMA buffer boyutunu değiştir; ardından üç çalışma modunu karşılaştır.</span>
  </div>
  <div class="mlv-demo-panel">
    <strong>Ne Öğren</strong>
    <span>`polling -> her örnekte CPU`, `interrupt -> her olayda ISR`, `DMA -> blok bazlı wake-up` farkını zaman çizelgesinde gör.</span>
  </div>
  <div class="mlv-demo-panel">
    <strong>Görev</strong>
    <span>Aynı ADC akışını önce polling ile çalıştır, sonra interrupt'a geç ve en son DMA buffer boyutunu ayarlayarak CPU yükünü düşür.</span>
  </div>
</div>

<div class="mlv-demo-note">
DMA sihir değildir; veri kaybını azaltır ve CPU yükünü düşürür ama buffer boyutu büyüdükçe uygulamanın veriyi işlemeye başlama gecikmesi artar.
</div>

<iframe
  class="mlv-demo-frame"
  src="../_static/demos/stm32-interrupt-dma-lab.html"
  title="STM32 Interrupt, DMA ve CPU Yükü"
  loading="lazy"
  frameborder="0"
></iframe>

## Bu Derste Ne Oturmalı?

1. `Polling`, CPU'nun çevre birimini sürekli kontrol etmesini ister; düşük hızda basittir ama akış büyüdükçe pahalı hale gelir.
2. `Interrupt`, olay olduğunda CPU'yu uyandırır; seyrek veya orta yoğunluklu olaylarda verimlidir ama çok sık kesme oluşursa sistem `ISR fırtınası` yaşayabilir.
3. `DMA`, çevre biriminden belleğe aktarımı CPU'dan bağımsızlaştırır; CPU çoğunlukla sadece `half/full complete` anlarında devreye girer.
4. DMA tarafında `buffer boyutu`, CPU wake-up sayısı ile uygulamanın veriyi görme gecikmesi arasında doğrudan bir takastır.

```{note}
Bir sonraki doğal laboratuvarlar `SPI`, `FreeRTOS görev planlama`, `low power modları` ya da `RTOS + DMA` entegrasyonu olabilir.
```
