# Etkileşimli STM32 Event Groups ve Software Timers

<div class="mlv-demo-links">
  <a class="mlv-demo-link" href="index.html">STM32 Rotasi</a>
  <a class="mlv-demo-link" href="interactive_gpio_lab.html">GPIO Laboratuvari</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 Laboratuvari</a>
  <a class="mlv-demo-link" href="interactive_adc_lab.html">ADC ve Sensorler</a>
  <a class="mlv-demo-link" href="interactive_i2c_lab.html">I2C ve Sensorler</a>
  <a class="mlv-demo-link" href="interactive_interrupt_dma_lab.html">Interrupt ve DMA</a>
  <a class="mlv-demo-link" href="interactive_spi_lab.html">SPI ve Cevre Birimleri</a>
  <a class="mlv-demo-link" href="interactive_freertos_lab.html">FreeRTOS ve Gorevler</a>
  <a class="mlv-demo-link" href="interactive_low_power_lab.html">Low Power ve Uyku</a>
  <a class="mlv-demo-link" href="interactive_mutex_priority_lab.html">Mutex ve PI</a>
  <a class="mlv-demo-link" href="interactive_tickless_idle_lab.html">Tickless Idle</a>
  <a class="mlv-demo-link active" href="interactive_event_groups_lab.html">Event Groups</a>
  <a class="mlv-demo-link" href="interactive_can_filter_lab.html">CAN</a>
  <a class="mlv-demo-link" href="interactive_watchdog_fault_lab.html">Watchdog</a>
  <a class="mlv-demo-link" href="interactive_usb_cdc_ring_lab.html">USB CDC</a>
  <a class="mlv-demo-link secondary" href="../_static/demos/stm32-event-groups-lab.html">Tam Ekran Demo</a>
</div>

<div class="mlv-demo-hero">
  <div class="mlv-demo-kicker">STM32 / Ders 13</div>
  <p class="mlv-demo-lead">Bu laboratuvar, `Event Groups` ve `Software Timers` kavramlarini yalnizca API isimleri olarak degil; birden fazla sinyalin ayni gorevi nasil uyandirdigi, `ANY` ile `ALL` bekleme arasindaki farkin ne oldugu ve `clear-on-exit` seciminin neden kritik hale gelebildigi somut bir RTOS koordinasyon problemi olarak gorunur kilar. Hedef, `xEventGroupWaitBits` ile `xTimer` callback mantigini ayni zaman cizelgesinde sezgisel hale getirmektir.</p>
</div>

<div class="mlv-demo-grid">
  <div class="mlv-demo-panel">
    <strong>Ne Yap</strong>
    <span>Bekleme modunu, `clear-on-exit` secimini, timer periyodunu ve sinyal zamanlarini degistir; ardindan latched bitlerin ve timer callback'lerinin gorevi nasil uyandirdigini izle.</span>
  </div>
  <div class="mlv-demo-panel">
    <strong>Ne Ogren</strong>
    <span>`ANY` ve `ALL` bekleme, `clear-on-exit`, event bit'lerin latch davranisi ve software timer callback'inin neden agir isi degil sadece sinyal yaymayi ustlenmesi gerektigini gor.</span>
  </div>
  <div class="mlv-demo-panel">
    <strong>Gorev</strong>
    <span>Once temiz bir senaryo kur ve gorevin sadece yeni sinyallerde uyanmasini sagla. Sonra `clear-on-exit` secimini kapatip neden stale retrigger olustugunu kendi gozunle gor.</span>
  </div>
</div>

<div class="mlv-demo-note">
Event Groups, bir yigin daginik flag'i toparlar; ama yanlis `wait bits` veya `clear-on-exit` secimi gorevin gereksiz yere tekrar tekrar kosmasina yol acabilir. Software timer callback'i de bu koordinasyonun tetikleyicisi olmali; butun isi callback icine yigmak degil.
</div>

<iframe
  class="mlv-demo-frame"
  src="../_static/demos/stm32-event-groups-lab.html"
  title="STM32 Event Groups ve Software Timers"
  loading="lazy"
  frameborder="0"
></iframe>

## Bu Derste Ne Oturmali?

1. `Event Groups`, bir gorevin birden fazla olay bitine gore `ANY` ya da `ALL` mantigiyla bloke olmasini saglar; bu, daginik global flag okumaktan cok daha okunabilir bir desen olabilir.
2. `clear-on-exit`, dogru kullanildiginda ayni bitlerin gereksiz yere tekrar tetiklemesini engeller; kapali oldugunda ise stale retrigger davranisi kolayca ortaya cikabilir.
3. `Software timer`, agir isi callback icinde yapmak icin degil; gorevlere dogru anda hafif bir sinyal vermek icin degerlidir.
4. Dogru desen sadece `xEventGroupWaitBits` kullanmak degil; hangi bitlerin beklenecegini, ne zaman temizlenecegini ve timer callback'inin nasil hafif tutulacagini birlikte dusunmektir.

```{note}
Bu laboratuvarin sonraki dogal adimi `CAN ve mesaj filtreleme` olur; onun ardindan `watchdog + fault recovery`, `USB CDC + ring buffer` ya da `stream buffer / message buffer` gelebilir.
```
