---
title: "STM32 ile Donanım Seviyesinde Gerçek Rastgelelik Üretmek: Bir Zamanlayıcı Kaosu"
description: "Merhaba teknoloji tutkunları ve elektronik maceraperestleri. Burak Ege ile \"Sıfırıncı Durum\"a hoş geldiniz."
date: 2026-11-05T07:34:50Z
updated: 2026-11-05T07:34:50Z
author: "Burak Ege"
site: "Sıfırıncı Durum: Donanım ve Yazılımın Derinliklerinde"
language: "tr"
tags: ["stm32", "rng", "donanım", "rastgelelik", "gömülü_sistemler"]
url: "https://devredekiakil.nasilalinir.com/stm32-ile-donanim-seviyesinde-gercek-rastgelelik-uretmek-bir-zamanlayici-kaosu"
---

# STM32 ile Donanım Seviyesinde Gerçek Rastgelelik Üretmek: Bir Zamanlayıcı Kaosu

Merhaba teknoloji tutkunları ve elektronik maceraperestleri. Burak Ege ile "Sıfırıncı Durum"a hoş geldiniz.

Geçmiş yazılarda, rastgeleliğin soyut kavramlarını, hayatın ritmindeki tesadüfleri ya da algoritmaların belirlediği doğal varyasyonları ele almıştık. Ancak benim için, bu kavramların en saf ve en zorlayıcı hali, fiziksel bir devre üzerinde vücut bulduğunda ortaya çıkıyor. Bir yazılımda üretilen pseudorandom sayı dizileri (PRNG) güzel bir model olabilir, ancak bu bir taklit. Eğer bir projede gerçekten *gürültüye* dayanan, öngörülemez bir kaynak gerekiyorsa, o zaman donanıma inmeliyiz.

Ve bu bizi mikrodenetleyicilerin derinliklerine, özellikle de termal gürültüye veya dahili zamanlama hatalarına dayanarak bir *entropi kaynağı* oluşturmaya götürüyor. Bu yazıda, gömülü sistemler dünyasının kurtarıcısı olan STM32 serisi üzerinde, en azından nispeten güvenilir bir donanım tabanlı rastgele sayı üreteci (RNG) oluşturmanın adımlarını inceleyeceğiz.

## Donanım Gürültüsünü Sinyale Dönüştürmek

Bizim hedefimiz, sadece bir `rand()` fonksiyonunu çağırmak değil; sistemin fiziksel gerçekliğinden rastgelelik çekmek. STM32 gibi modern MCU’lar, bu iş için dahili donanım modülleri sunar. Ancak bu modüllerin varlığını bilmek yetmez, onların *nasıl* çalıştığını anlamak gerekir.

Basit bir yaklaşım, üç farklı fiziksel olayın aynı anda meydana gelmesini beklemektir. Örneğin, bir ADC'den okunan, tam olarak aynı anda alınamayan üç farklı kesme (interrupt) olayının zaman damgalarını alıp, bu zaman farklarını bir tamponda biriktirmek. Bu tamponlama, fiziksel zamanlamadan kaynaklanan küçük varyasyonları yakalayarak bizi deterministik olmayan bir noktaya ulaştırır.

Bu örneğimizde, daha ulaşılabilir bir seviyede kalarak, STM32’nin dahili düşük seviyeli kesme olaylarını (örneğin, bir timer'ın beklenmedik biriken sayacını) kullanarak entropi toplayacağız.

### Adım Adım Uygulama Akışı

Bu süreç, yazılım ve donanımın mükemmel bir dansını gerektirir.

**1. Kaynak Seçimi (The Seed):**
En büyük hata, her şeyi bir başlangıç sayısına (seed) bağlamaktır. Gerçek rastgelelik için, başlangıç noktamızın öngörülemez olması gerekir. STM32'nin genellikle bir düşük güç tüketimi modülü veya bir çevre biriminin doğal olarak kayan bir durumundan (drift) gelen veriyi başlangıç olarak kullanıyoruz. Bu, bir fiziksel ölçümle gelmelidir.

**2. Veri Toplama (The Noise Collection):**
Bir timer'ın sayım değerlerini okumak yerine, bu sayımın oluştuğu anda sistemdeki başka bir olayın (örneğin, bir harici I/O pininin kare dalga üretmesi) durumunu okumak, daha fazla entropi sağlar. Bu okumaların zamanlaması, yazılımımızın kontrolünden çıkmış olur.

**3. Doğrulama ve Çıkarma (The Filtering):**
Ham okumalarımız muhtemelen çok gürültülü olacaktır. Bu ham veriyi alıp, basit bir geri besleme (feedback) veya XOR işlemine sokarak, bunu daha önce üretilen sayılarla karıştırıyoruz. Bu, gerçekten "kullanılabilir" bir entropi akışı yaratır.

**4. Çıkış ve İlerleme:**
Bu döngü sonucunda elde ettiğimiz çıktı, matematiksel olarak tamamen tahmin edilemez bir sonraki durumu temsil eder. Bu, artık bir PRNG'nin tahmini değil, fiziksel bir olayın matematiksel temsilidir.

Gördüğünüz gibi, mükemmel rastgeleliği bulmak, donanımın kendisinin kusurlarını, yani gürültüsünü bir avantaja çevirmekle mümkün oluyor. Bir devre kartındaki en küçük sapma bile, doğru algılandığında, en değerli bilgiyi sunabilir.

Eğer siz de bir projede "rastgelelik" arıyorsanız, sadece kütüphaneye güvenmek yerine, donanımınızı bir laboratuvar cihazına dönüştürün. Olayın kaynağına inin.

Bir sonraki durağımızda, bu entropiyi daha yüksek seviyeli bir uygulamaya nasıl entegre edeceğimizi göreceğiz. Sabırla ve analitik bir zihinle kalın.
