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

İçindekiler

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

STM32 / Ders 7

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.

Ne Yap 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.
Ne Öğren `polling -> her örnekte CPU`, `interrupt -> her olayda ISR`, `DMA -> blok bazlı wake-up` farkını zaman çizelgesinde gör.
Görev 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.
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.

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.

Not

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