GPIOx->AFR[0] GPIOx->AFRL FARKI

Başlatan LukeSkywalker, 05 Şubat 2013, 08:44:27

LukeSkywalker

Şamatalar konusunda da sordum fakat cevap alamadim. Diger bütün iki parçalı registerlar orjinal isimleriyle h/l olarak yazilirken (bsrrh,bsrrl gibi) bu register neden sonuna[0] getirilerek kullaniliyor? Fark nedir?
Tesekkurler.

camby

#1
Aynı şey olay tamamen struct içindeki tanımlamadan dolayı o şekilde. Siz header içindeki tanımı AFRL ve AFRH olarak değiştirirseniz de aynısı olur.
Benzer yapılar interrupt ayarlarında da vardı , orası daha da karışıktı..

Ben AFR ve benzeri için header dosyasını bozmadım , GPIOx->AFR[0] şeklinde kullanıyorum. Hatta artık onu da kullanmıyorum st nin kendi kütüphanelerindeki kullanımları uyguluyorum. Kendi kütüphaneleri ile kullanınca bu ve benzeri registerlar bile görülmüyor.

LukeSkywalker

Teşekkürler cevap için. Registerları neden orjinal isimleriyle tanımlamazlarki...
Veya birisini öyle birisini böyle neden tanımlıyorlar acaba?

Klein

AFR'nin durumu BSR gibi değil biraz barklı. BSRRL,BSRRH gibi registerlerde L ve H  32 bit registerin alt ve üst 16 bitini ifade ediyor. Ancak AFR gibi birden fazla 32 bitlik alan kaplayan registerler array şeklinde düzenlendiği için, xxx[0], xxx[1] şeklinde kullanıyoruz.  ST nin register ismi verirken genel yaklaşımı bu.  İstisna var mı hatırlamıyorum.