STM32 HAL Kütüphanesi GPIO Örnek Fonksiyon İnceleme

İkinci yazımızda HAL kütüphanesinin GPIO sürücüsüne ait fonksiyon ve değerleri inceleyeceğiz. Bu yazıda nasıl kılavuzdan faydalandığımızı göreceksiniz ve kılavuzun diğer kısımlarını da rahatça kullanabileceksiniz.

Öncelikle örnek bir fonksiyon açıklamasını ayrıntılı olarak ele alalım ve sonrasında diğerlerini açıklayalım.

Burada fonksiyon açıklamasına baktığımızda başta oldukça karmaşık geliyor. Nereye ne yazacağız ve fonksiyonu nasıl kullanacağız pek kestiremiyoruz. Aslında bunların belli başlı bir kuralı var ve bu kuralları öğrendiğimizde tüm fonksiyonları rahatça anlama imkanı buluruz. “Function Name” olarak belirtilen fonksiyon adı aslında fonksiyonun söz dizimi demektir. Yani fonksiyonu kullanırken bu yapıyı esas almalıyız. Şimdi bu fonksiyon adını bir inceleyelim.

void HAL_GPIO_Init (GPIO_TypeDef * GPIOx, GPIO_InitTypeDef * GPIO_Init)

Burada belli başlı ifadelerin olduğunu görüyoruz. Öncelikle “void” kelimesini biz fonksiyon yazarken kullanmayacağız. Bu fonksiyonun döndürdüğü değeri ifade etmekte. Bazen int, float şeklinde ifadeler olmaktadır. Buradan fonksiyonun değer döndürüp döndürmediğini ve döndürürse de hangi değeri döndürdüğünü öğreniyoruz.

HAL_GPIO_Init ise fonksiyonun adıdır. Fonksiyonu kullanırken bu adı kullanmamız gerektiğini öğreniyoruz.

Parantez içinde ise argümanlar yer almaktadır. Yazacağımız argümanların tipini görmekteyiz. Bu argümanlara başka bir isim de verilebilir önemli olan bunların hangi tip olduğudur. Örneğin GPIO_TypeDef* ve GPIO_InitTypeDef* tipinde argümanları görmekteyiz. Yani bu fonksiyon iki yapı değişkeni almakta. Bunlardan birine GPIOx adı verilmiş çünkü tanımlamalarda GPIOA, GPIOB, GPIOC… diye geçmektedir. İstersek farklı bir adda da GPIO_TypeDef* tipinde bir değer oluşturup argüman olarak aktarabiliriz. Bu ad kısmı sadece kolay hatırlanması içindir. Önemli nokta fonksiyonun aldığı argümanın tipidir.  Yine GPIO_InitTypeDef* şeklinde GPIO_Init adını verdiği argümanı almaktadır. Burada bizim illa GPIO_Init adında bir argüman yollamamız şart değildir. Uygulamada gördüğünüz gibi GPIO_InitTypeDef şeklinde led veya dugme adında yapı değeri oluşturduk ve adres oparetörü (&) ile belirterek argüman olarak gönderdik. Neden adres operatörünü kullandığımızı ise işaretçi operatörünün (*) olmasından anlayabilirsiniz. İşaretçiye değer göndermek için adres operatörünü kullanıyoruz.

Function Description” kısmında ise fonksiyonun yaptığı işin açıklamasını görmekteyiz. Burada GPIOx çevre birimini tanımladığını ve GPIO çevre birimini STM32F3 aygıtlarında seçtiğini ifade etmekte. Görüldüğü gibi size ne işe yaradığını uzun uzun öğretmeye çalışmıyor bunun yerine mühendisler için kısaca gerekli bilgi yazılı.

“Parameters” Kısmı ise aldığı argümanların açıklamasını yapmaktadır. Örneğin GPIOx diye adlandırılan değişkende x harfinin (A…F) arasında olacağını ve STM32F3 ailesinin GPIO çevrebirimini seçeceği belirtilmiş. GPIO_Init ise GPIO_InitTypeDef yapısına işaretçi olduğu ve seçilen GPIO birimine ait konfigürasyon bilgisini içerdiği belirtilmiş.

“Return Values”  Kısmında ise döndürdüğü değer görülmektedir. Bu void tipinde bir fonksiyon olduğu için değer döndürmemektedir.

Bütün bu bilgileri kullanarak fonksiyonun örnek söz diziminin şu şekilde olacağını bulabiliriz.

Fonksiyonları bu şekilde özetleştirerek bir dosyaya yazmanız sizin için referans olarak oldukça işe yarayacaktır. Fonksiyonun ne işe yaradığını bilmeniz yeterli olur. Adını ve aldığı argümanları harfi harfine ezberlemeniz çok da gerekli değildir. Önemli olan gerektiğinde referansı bakıp doğru bir şekilde kullanabilmenizdir. O yüzden ezbere kod yazmamak için ezberlemeye kalkmak yerine anlamaya çalışın.

Sonraki yazımızda GPIO kütüphanesine ait fonksiyonları kısaca inceleyeceğiz ve kısa bir referans oluşturacağız.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.