STM32F407VG Driver Geliştirme – 4 (GPIO.h)
GPIO.c ve GPIO.h file işlemlerini bu yazımızda ele alacağız.
Aşağıdaki kodar Register üzerine 1,0 işlemlerini yapmak için tanımlanmıştır.
Mantığı daha iyi anlatabilmek için bir örnek verelim.

Burada 3. pini ‘1’ yaptık , OTYPE Registerında 16 bit olduğu için uint16_t olarak cast ettik . En önemlisi
3. biti nasıl ‘1’ yaptığımızla alaklı, burada ister “0000 0000 0000 1000″(bin) yada “0x0008” (hex) türünden yazabiliriz, biz burada hex türünden yazdık ve bunu GPIO_PIN_3 adlı değişkene yolladık artık GPIO_PIN_3 değişkeni “0x0008” (hex) verisini tutuyor.
2. Örnek olarak ; eğer Register 32 bitlik ise.

16 bitlik cast işleminden elde edilen sonucu (x2) diyerek güncelliyoruz. Yabi 3. pine gitmek için 3 x 2 : 6 bit ‘e git diyoruz tablodanda görüleceği gibi 3. pinin başlangıç biti 6’dır.
Yukardaki registerlara baktığımızda uygun bitlere (0,1) veya (00,01,10,11) yazmamız gerektiğini söylemeliyiz fakat bunu yaparken manuel olarak yapmamalıyız.
Mode Registerına “Input Mode” , “Output Mode”, “Alternate Function Mode” ve “Analog Mode” olarak 4 farklı işlem uygulayacağız.
Aşağıdaki tabloyu dikatlice incelersek eğer şunu farkedeceğiz (00,01,10,11) bu bitleri yukaarda yazdığımız şekilde bizim anlayabileceğimiz seviyede atama işlemi yaptık.
Şimdi gelelim GPIO Birimlerindeki Registerlara veri yazmanın nasıl olacağına.
İlk olarak şunu bilelim aşağıda oluşturulan “typedef struct” yapısı bizim Regsiterlara direkt olarak verileri yazacağımız struct yapısı değil.
Sadece kullanıcının girdiği verileri hafızada tutacak ve varsa üzerlerinde işlemler yaparak doğrudan Registerlara ulaşan Struct yapılarınaa gönderecek yani biz burda 2 adet “typedef struct” yapısı kullanacağız , 1. köprü gibi taşıma işlemini halledecek diğeri ise doğrudan registerlar üzerine yazacak.
Burada kendi veri tipimizi oluşturduk , amacımız ise bir Pini Set veya Reset yapmak. Karşılık geldiği değerlere bakacak olursak eğer
Set : 1, Reset : 0
Burada GPIO işlemleri için kullanacağımız fonksiyonlarının prototiplerini tanımladık.
Kodun devamı bir sonraki yazımızda.






